Javascript e.keyCode在IE中无法捕获退格键/删除键

19

我正尝试使用javascript/jQuery捕获Backspace和Delete键的按下事件,代码如下。

$("textarea[name=txt]").keypress(function(e){
    var keycode =  e.keyCode ? e.keyCode : e.which;

    if(keycode == 8){ // backspace
        // do somethiing
        alert(keycode);
    }

    if(keycode == 46){ // delete
        // do somethiing
        alert(keycode);
    } 

});

这些代码在Firefox(3.6.12)中运行得很好。这意味着当按下Backspace或Delete键时,弹出警告。 但在Internet Explorer(8)中无法正常工作。

有人可以建议我在Internet Explorer中捕捉这些按键事件的另一种方式吗?


1
这个页面似乎暗示你需要使用 keydown 事件而不是 keypress 事件。是这么简单吗? - clarkf
2个回答

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

特殊键

对于删除、结束、输入、退出、功能键、主页、插入、页面上/下和制表符,Explorer不会触发keypress事件。

如果您需要检测这些键,请在onkeydown/up上搜索它们的keyCode,并忽略onkeypress和charCode。

您可以阅读更多关于检测按键 (Quirksmode)的跨浏览器问题。


-4

如果文本框中已经有几个字符,那么退格键的键码将为83

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


2
83 不是代表字符 's' 吗? - kzh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接