Opera没有触发keyup和keydown事件

时间:2013-10-18 18:20:53

标签: jquery opera keyboard-events

我在Opera中遇到了keydown和keyup事件的问题。出于某种原因,这在Opera中无所作为:

// add submit event for pressing enter
$(".select2-input").each(function (counter, element) {
    $(element).keydown(function (event) {
        console.log("key down");
        if (!event) event = window.event;
        var keyCode = event.keyCode || event.which;
        if(keyCode == '13' /* enter key */ ) {
            console.log("press enter");
        }
    });
});

我尝试过使用keyup,但这也无效。在Chrome和Firefox中,它运行良好。如您所见,代码的实际用途是检测回车键。但是,任何关键都没有输出。我已经看到了其他只涉及Opera中的向下键的问题,但这显然是别的。

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

好的,我现在明白了。

我使用了Hugos的答案,但是将事件更改为keyup,现在它在所有浏览器中都运行得很好(虽然IE我还没有测试过。)

$(document).ready(function(){
    $(document).on("keyup",".select2-input", function (event) {
        console.log("key up");
        if (!event) event = window.event;
            var keyCode = event.keyCode || event.which;
            if(keyCode == '13' /* enter key */ ) {
                console.log("press enter");
            }   
        });
});

非常感谢!

答案 1 :(得分:0)

之前有过这个和Oper的错误,但现在应该修复。这可能会有所帮助:http://quirksmode.org/dom/events/不确定您使用的是哪个版本,等等。

答案 2 :(得分:0)

尝试更改您的代码:

$(document).ready(function(){
    $(document).on("keydown",".select2-input",function(event){
        console.log("key down");
        if (!event) event = window.event;
        var keyCode = event.keyCode || event.which;
        if(keyCode == '13' /* enter key */ ) {
            console.log("press enter");
        }   
    });
});