JavaScript.on("keyup")

JavaScript .on("keyup")

有一个输入文本在 "onkeyup" 事件上触发了一个函数。当该函数触发时,我将 "keyup" 事件与 .on("keyup") 方法绑定,以获取最后按下的键以查明它是否为字母数字,以便触发搜索 ajax我想。完成后,我使用 .off("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: 感谢克里斯,我已经解决了。

你的代码对我有用(见下文)。也许检查你在哪里绑定你的 keyup 事件。它应该在页面显示之前加载文档时绑定一次。如果您多次绑定它(即,如果包含您的 keyup 函数的代码 运行 不止一次),您将 运行 遇到问题。

$("#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" />

活动无需解绑。试试这个

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