2017-09-17 1 views
0

키보드 입력을 청취하는 이벤트 리스너를 만들려고합니다. ZZPX 및 텍스트 입력에 초점을 맞 춥니 다. ZZPX12345 12345 부분이 텍스트 입력에 입력되고 양식이 제출됩니다.JQuery addEventListener가 keydown 입력 후 재설정되지 않습니다.

일단 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); 
} 
+0

문제는 jQuery가 아닙니다. 내 편집을 참조하십시오. – Axel

답변

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);

관련 문제