2017-04-15 83 views
0

有一个输入文本在“onkeyup”事件上触发一个函数。当该函数触发时,我使用.on(“keyup”)方法绑定一个“keyup”事件,以便获取最后一次按下的键以查找它是否是字母数字以便激发我想要的搜索ajax。在完成之后,我使用.off(“keyup”)方法解除连接。JavaScript .on(“keyup”)

但是有一个问题,解除绑定。问题是;我的代码只运行一次,并且不会轮到一次,然后再次运行,并且不会为另一轮运行并继续运行。我替换了我想简化测试的代码。

$("#arama").on("keyup",function(event) { 
 
     console.log("asd"); 
 
     $("#arama").off("keyup"); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="arama" />

我在哪里弄错了?

P.S:我已经解决了,这要感谢Chris。

回答

0

您的代码适用于我(请参阅下文)。也许检查你绑定你的事件的地方。在页面显示之前加载文档时,它应该被绑定一次。如果多次绑定它(即,如果包含您的函数的代码运行多次),您将遇到问题。

$("#arama").on("keyup", function(event) { 
 
    var i = event.keyCode; 
 
    if ((i >= 48 && i <= 57) || (i >= 96 && i <= 105)) { 
 
    $("#arama").off("keyup"); 
 
    console.log("Number pressed. Stopping..."); 
 
    } else { 
 
    console.log("Non-number pressed."); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<input id="arama" />

+0

很奇怪,你的代码运行日志,即使我写一次多次http://i.hizliresim.com/JazolQ.png –

+0

这是因为它被解除绑定'keyup'事件它发射一次后。你可以在'.off(“keyup”)'命令中设置一个条件来控制何时停止运行父功能。 –

+0

你好像误解了我。看到这些2图片http://i.hizliresim.com/nRN8da.png http://i.hizliresim.com/GB48Av.png第一张图片我写了3个字符,它没有记录第三个字符,On第二张图片我写了4个字符,并且每隔两次都记录一次字符它记录了第三个和第四个字符的记录。我正在查看它是否是字母数字不只是数字它是为了确保它不是按Ctrl,Alt或者是 –

0

无需取消绑定事件。试试这个

$("#arama").on("keyup",function(event) { 
    console.log("asd"); 
}); 
+0

我实际上必须解除它,因为我每次在输入文本上按下某个键时父函数都会触发,因此我多次声明它。如果我不解除绑定,它会一直保持绑定并多次激发代码。 –

+0

你能分享你的完整代码吗? –