2012-07-26 65 views
1

我有一个按键事件处理程序,我很难尝试识别用户是否在手机键盘(例如iPhone)中按下冒号Javascript:无法识别移动键盘中的冒号键

问题是浏览器对于冒号和分号都返回相同的event.keyCode值(或event.which,具体取决于浏览器)。并且自从​​事件处理程序触发时,该值未添加到HTMLInputElement'svalue属性中,我无法使用简单的“最后一个字符”和“检查一下它的分号逻辑”。

而使用String.fromCharCode() 186(这是iPhone上的冒号按钮的event.which值)不会给我一个分号,而是一个奇怪的圆圈字符。但印刷 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; 
       } 

回答

1

使用按键代替;您仍然可以使用event.preventDefault()来防止字符出现在输入中。

+0

按键不是标准。 来自jQuery网站:“keypress事件不受任何官方规范的约束,在浏览器,浏览器版本和平台上使用时遇到的实际行为可能会有所不同。” http://api.jquery.com/keypress/ – 2012-11-26 19:11:26

+0

虽然不是标准,但有很多支持,特别是在我测试过的移动浏览器中。 ppk在http://www.quirksmode.org/dom/events/keys.html有一个简短的兼容性表 – jaf0 2012-11-27 06:58:20