我有一个按键事件处理程序,我很难确定用户是否在手机键盘(例如 iPhone)中按下了冒号
问题是浏览器为冒号和分号返回相同的event.keyCode
值(或event.which
,取决于浏览器)。并且由于在keydown
事件处理程序触发时,该值尚未添加到HTMLInputElement's
value
属性中,我无法使用简单的 get-the-last-character-and-check-if-its-a-colon 逻辑。
并且使用String.fromCharCode()
for 186(这是event.which
iPhone上冒号按钮的值)不会给我一个分号而是一个奇怪的圆圈字符。但是打印
String.fromCharCode(59)
确实给了我一个冒号。
这是我的代码的简单版本:
isColon : function(event)
{
// first check for desktop browsers
if (event.shiftKey && event.which == constants.KEYS.COLON) //the constant is 186 or 59 depending on browser, this works on all desktop browsers
return true;
//this doesnt work as event.which=186 which is NOT giving a ":" when I say String.fromCharCode(event.which)
if (String.fromCharCode(event.which) == ":")
return true;
return false;
}