JQuery addEventListener在keydown输入后没有重置

时间:2017-09-17 13:18:29

标签: javascript jquery

我尝试创建一个侦听键盘输入ZZPX并聚焦文本输入的事件侦听器 - 以便在扫描条形码时例如ZZPX12345将12345部分输入文本输入并提交表格。

一切正常,除非一旦输入了ZZPX,脚本就会保持循环,所以如果按下任何其他键,它会自动将文本输入聚焦为任意键。我想我需要尝试重置这个听众,但我不确定如何和我试过看其他方法但无济于事。

if ( window.addEventListener ) {
    var kkeys = [], konami = "90,90,80,88"; 
    window.addEventListener("keydown", function(e){
            kkeys.push( e.keyCode );
            if ( kkeys.toString().indexOf( konami ) >= 0 ) {
                // run code here    
                $("#barcodeInput").focus();
            }
    }, true);
}

1 个答案:

答案 0 :(得分:0)

您需要使用removeEventListener。您还需要将事件处理程序包装到单独的函数中以便于阅读。

if ( window.addEventListener ) {
    var kkeys = [], konami = "90,90,80,88"; 
    window.addEventListener("keydown", window_keyDown, true);   
}

var kkeys = [], konami = "90,90,80,88"; 
function window_keyDown(evt) { 
    kkeys.push( evt.keyCode );
    if ( kkeys.toString().indexOf( konami ) >= 0 ) {
        // run code here
        $("#barcodeInput").focus();
        window.removeEventListener("keydown", window_keyDown);
    } 
}

如果由于某种原因您不想分离该功能,可以使用以下内容:

window.removeEventListener("keydown");

而不是

window.removeEventListener("keydown", window_keyDown);