1

我必须跟踪alphabet keysand backspace keywith JavaScript。我正在使用下面的书面代码来跟踪每个按键,但不幸的是,当我按下时backspace buttonIE我对这个问题一无所知。

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

提前致谢

4

3 回答 3

4

如果你想支持 IE 并使用特殊键(如deletebackspace),我建议使用keydown/keyup代替。

特殊键

Explorer不会触发 删除、结束、输入、转义、功能键、主页、插入、pageUp/Down 和选项卡的按键事件。

如果您需要检测这些键,请帮自己一个忙并搜索它们的 keyCode onkeydown/up,并忽略 onkeypress 和 charCode。

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

或者

如果我们在 Text Box 中已经有几个字符,则Backspace 的键代码将采用值 = 83 。

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

于 2013-09-23T14:27:59.137 回答
2

如果您想支持 IE 并且您使用特殊键(如deletebackspace),我建议您keydown/keyup改用。

于 2013-09-08T10:26:43.153 回答
2

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

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

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

但是在IE10中。event.which没有为特殊处理键提供 undefined 或零,而是给出了键码....令人惊讶的是,它为 Dot( . ) 和 Delete 、 Single quote( ' ) 和 Right arrow 等提供了相同的键码。

因此,当使用event.which 或 event.keycode按下特殊处理键时,我们无法在 IE10 中准确识别。

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

event.charCode == 0 

用于识别IE10中的特殊处理字符

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

于 2014-07-30T14:12:37.827 回答