keyup javascript上的addEventListener一次

时间:2017-05-22 08:11:45

标签: javascript function keydown

我想在键盘输入后运行countup();random();功能。但是我想这是第一次唯一的工作。我的意思是当我第一次点击进入时,它将运行该功能。但是如果这些功能已经运行并再次点击输入,它将永远不会产生任何影响。

这是我的代码:

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

任何人都可以帮助我吗?感谢。

8 个答案:

答案 0 :(得分:11)

做这样的事情

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

答案 1 :(得分:3)

Idea是用户的全局变量,在触发事件后设置它。

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

答案 2 :(得分:3)

你可以在触发它之后使click事件监听器只工作一次。你只需要向addEventListener() {once:true}添加另一个参数,它将按预期工作:

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

检查我的question是否与您的情况类似。

你也可以使用removeEventListener()方法,但是你应该先将你的匿名函数定义为myKeyPressed()之类的外部函数,然后在条件中删除元素中的事件监听器:

element.removeEventListener("keydown", myKeyPressed);

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在javascript中有一个removeEventListener函数,但在你调用addEventListener的函数中实现它是很棘手的。 试试这个,它在jsfiddle工作。

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

答案 5 :(得分:0)

您可以添加变量来检查keydown的状态。 第一次使用它时,将其设置为true。所以你只会触发一次这个功能。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

要将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