簡體   English   中英

keyup javascript上的addEventListener一次

[英]addEventListener on keyup javascript once

我想運行countup(); random(); 我在鍵盤上輸入后的功能。 但是我想這是第一次唯一的工作。我的意思是當我第一次點擊進入時,它將運行該功能。 但是如果這些功能已經運行並再次點擊輸入,它將永遠不會產生任何影響。

這是我的代碼:

addEventListener("keydown", function(e){
    if (e.keyCode === 13) {
        countup();
        random();
    }
});

有人可以幫幫我嗎? 謝謝。

做這樣的事情

// Create a named function as your event handler
var myFunction = function (e) {
  if (e.keyCode === 13) {
    // Do your stuff here
    countup();
    random();

    // Remove event listener so that next time it is not triggered
    removeEventListener("keydown", myFunction);
  }
};

// Bind "keydown" event
addEventListener("keydown", myFunction);

Idea是用戶的全局變量,在觸發事件后設置它。

var is_fired = false;
addEventListener("keydown", function(e){
    if (e.keyCode === 13 && is_fired == false) {
        countup();
        random();
        is_fired = true
    }
});

你可以在觸發它之后使click事件監聽器只工作一次。你只需要為addEventListener()添加另一個參數,即{once:true} ,它將按預期工作:

addEventListener("keydown", function(e){
      if (e.keyCode === 13) {
        countup();
        random();
      }
},{once: true});

檢查我的問題,這與你的情況類似。

你也可以使用removeEventListener()方法,但是你應該在之前定義你的Anonymous函數作為myKeyPressed()類的外部函數,然后在內部如果條件從你的元素中刪除事件Listener:

element.removeEventListener("keydown", myKeyPressed);
var is_clicked = false;
addEventListener("keydown", function(e){
      if (e.keyCode === 13 && !is_clicked) {
        countup();
        random();
        is_clicked = true;
      }
    });

在javascript中有一個removeEventListener函數,但在你調用addEventListener的函數中實現它是很棘手的。 試試這個,它在jsfiddle中運行。

addEventListener("keydown", function(e){
    if (e.keyCode === 13) {
        alert("i did it");
        this.removeEventListener('keydown',arguments.callee,false);
    }
});

您可以添加變量來檢查keydown的狀態。 第一次使用它時,將其設置為true。 所以你只會觸發一次這個功能。

 var n = document.getElementById("txtInput"),
          r = document.getElementById("result"),
          loadFlag = true;

      n.addEventListener("keyup", function(e) {
       if (e.keyCode === 13 && loadFlag ) {
                countup(r);   
        random(r);
        loadFlag = false;
        }
      }, false);

將keydown添加到HTML代碼中的元素。

element.addEventListener("keydown", event => {
//check if event is cancelable because not all event can be cancelled
if(event.cancelable)
   { 
       //this prevent element from executing the default event when user click
       event.preventDefault()
       if(event.keycode === 13){ //write your statement here }
   }
}

更多https://www.w3schools.com/jsref/event_preventdefault.asp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM