event.which和event.keycode无法在Internet Explorer 10上用于退格按钮

时间:2013-09-08 10:13:18

标签: javascript jquery internet-explorer

我必须使用alphabet keys跟踪backspace keyJavaScript。 我使用下面编写的代码来跟踪每个按键,但不幸的是,当我在backspace button中按IE时,我对此问题一无所知。

    $('#crossword').delegate('.grid_input_holder','keypress',function(event){
            alert('keycode : '+event.keycode+' which : '+$(this).val( String.fromCharCode(event.which));
    });

提前致谢

3 个答案:

答案 0 :(得分:4)

如果你想支持IE并且使用特殊密钥(例如deletebackspace),我建议改为使用keydown / keyup

  

特殊键

     

资源管理器不会触发按键   删除,结束,输入,转义事件,   功能键,主页,插入,   pageUp / Down和tab。

     

如果您需要检测这些密钥,请帮忙并搜索其keyCode onkeydown / up ,并忽略onkeypress和charCode。

您可以阅读有关 Detecting keystrokes (Quirksmode) 的跨浏览器问题的更多信息。

OR

如果我们在文本框中已经有几个字符,

退格键代码将采用值= 83

如果文本框中没有任何字符,并且我们正在尝试按退格键,则密钥代码将为= 8

答案 1 :(得分:2)

如果您想支持IE并且使用特殊密钥(例如deletebackspace),我建议您使用keydown/keyup

答案 2 :(得分:2)

使用IE10时出现问题。因为在IE版本中< 9给出

event.which == undefined || event.which == zero 

按下特殊处理键时,如 Backspace,DEL,INS,HOME,导航键,回车等 因此,我们可以轻松识别何时按下特殊处理字符并且可以单独处理。

但在 IE10 event.which 没有为特殊处理键提供未定义或零,而是提供键码.... 令人惊讶的是,它为Dot(。)和Delete,单引号(')和右箭头等提供相同的密钥代码。

因此,当使用按下特殊处理键时,我们无法准确识别IE10 event.which也不是event.keycode

在这种情况下......使用

event.charCode == 0 

用于识别 IE10

中的特殊处理字符

相信我的朋友,它为我节省了一个多星期的努力。