1
我有一个按键事件处理程序,我很难尝试识别用户是否在手机键盘(例如iPhone)中按下冒号Javascript:无法识别移动键盘中的冒号键
问题是浏览器对于冒号和分号都返回相同的event.keyCode
值(或event.which
,具体取决于浏览器)。并且自从事件处理程序触发时,该值未添加到HTMLInputElement's
value
属性中,我无法使用简单的“最后一个字符”和“检查一下它的分号逻辑”。
而使用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;
}
按键不是标准。 来自jQuery网站:“keypress事件不受任何官方规范的约束,在浏览器,浏览器版本和平台上使用时遇到的实际行为可能会有所不同。” http://api.jquery.com/keypress/ – 2012-11-26 19:11:26
虽然不是标准,但有很多支持,特别是在我测试过的移动浏览器中。 ppk在http://www.quirksmode.org/dom/events/keys.html有一个简短的兼容性表 – jaf0 2012-11-27 06:58:20