Javascript:无法在移动键盘中识别冒号键

时间:2012-07-26 21:01:49

标签: javascript javascript-events keyboard-events

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

问题是浏览器为冒号和分号返回相同的event.keyCode值(或event.which,具体取决于浏览器)。而且,因为keydown事件发生时处理程序触发,该值尚未添加到HTMLInputElement's value属性中,我无法使用简单的get-the-last-character-and-check-if-its-a-colon逻辑

使用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 个答案:

答案 0 :(得分:1)

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