【问题标题】:jQuery Input Event does not Fire if Input is Empty如果输入为空,jQuery 输入事件不会触发
【发布时间】:2012-04-17 18:36:11
【问题描述】:

我有一个 jQuery 事件处理程序,它对

中的每一个变化做出反应
<input id="myId" type="text" /> 

元素:

$("#myId").bind('input', function (e) {    
        // Do Stuff
    });

这很好用,除非#myId 中的输入为空(例如,输入框中只有 1 个字符,我用 Backspace 将其删除)。如果输入变为空,则不会触发事件。如果我然后输入一个字符,事件就会触发。

这是一个已知问题吗?难道我做错了什么?当输入为空时有什么方法可以获取事件?

更新

当输入 Backspace 时,事件根本不会触发,至少在 IE9 中是这样。

【问题讨论】:

  • 应该什么时候触发事件?不能使用keyup 事件吗?
  • oninput 事件似乎没有被广泛使用但它似乎存在:developer.mozilla.org/en/DOM/window.oninput
  • 仅供参考,input 事件在 IE6、7、8 中不起作用。

标签: jquery javascript-events


【解决方案1】:

据我所知,“输入”不是您要使用的事件。由于“输入”类似于“更改”,因此当您的字符串接近 0 个字符时,它往往会产生不好的结果,请改用 keyup

$("input#myId").bind('keyup', function (e) {    
    // Do Stuff
});

【讨论】:

  • 我在这里可能是错的,但我认为您不能说 keyup 是“您要使用的事件”,因为输入与 keyup 不同,会检测任何输入,如在剪切和粘贴中使用老鼠。我们在这里得到的只是firefox和IE在退格或删除是否应该算作“输入”方面存在分歧。我可以看到双方......我的猜测是,Eric J. 真的想要一个 on change 事件,它不会像常规的 change 事件那样等到元素失去焦点时才会触发。我不知道这个问题的答案是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
相关资源
最近更新 更多