javascript - jQuery 只绑定(bind)到 keyup,而不是焦点

标签 javascript jquery events navigation keyup

这看起来很简单,但谷歌没有为我找到任何东西:

如何仅绑定(bind)到文本/值更改事件,不包括获得焦点的输入?即,给出以下内容:

$(function(){
  $('input#target').on('keyup', function(){
    alert('Typed something in the input.');
  });
});

...当用户跳入和跳出元素时将触发警报,无论他们是否实际输入文本。除非用户在文本字段中输入/更改文本,否则如何允许用户通过键盘在表单中导航而不触发事件?

注意:我展示的是脚本的简化版本,不使用 change 事件的原因是在我的真实代码中我有一个延迟计时器,所以该事件在用户停止输入一秒钟后发生,他们无需改变焦点即可触发该事件。

最佳答案

存储值,并在任何关键事件上检查它是否已更改,如下所示:

$(function(){
  $('input#target').on('keyup', function(){
      if ($(this).data('val')!=this.value) {
          alert('Typed something in the input.');
      }
      $(this).data('val', this.value);
  });
});​

FIDDLE

关于javascript - jQuery 只绑定(bind)到 keyup,而不是焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159016/

相关文章:

jquery - jQgrid 在网格上搜索一个值

javascript - 应用于事件监听器不起作用

c# - 在 C# 中将多个事件处理程序连接到一个事件的最佳方法?

c# - 如何在嵌入式 Firebird 数据库连接上使用事件?

javascript - 使用javascript从字符串(URL)中删除子字符串(URL)

javascript - 多选择列表即时搜索正在工作,但需要保留 <optgroup> 标签

javascript - getJSON 只响应明文,否则不起作用?

javascript - 无法在保留所有标点符号的 JavaScript 中标记字符串

javascript - 如何向数千人传输 Twilio 视频室?

jQuery 悬停时淡入/淡出/淡出,无闪烁或队列