11

我想在用户键入时在每次修改文本框控件时运行一个函数。在大多数情况下,该事件.keyup()都很好。

但是,浏览器(如 Chrome 或 Firefox)可能会建议文本框控件的自动完成条目(可能是因为输入控件的 @name 或 @id 是已知的)。

不幸的是,当“单击建议的条目”时,我无法触发以下任何事件。.keyup()用键盘选择时触发)

$('input#email')
  .click(function() { console.log('click'); })
  .keyup(function() { console.log('keyup'); })
  .keydown(function() { console.log('keydown'); })
  .change(function() { console.log('change'); })
  .focus(function() { console.log('focus'); })
  .blur(function() { console.log('blur'); });

尽可能避免使用setInterval()定期检查。

有没有办法检测到这个“选择建议”事件?

4

4 回答 4

12

绑定propertychange事件:

$('input').bind('input propertychange', function() { 

    var input = this.value.trim();
    [...]   

});
于 2016-01-19T22:00:09.980 回答
5

简短的回答是否定的,没有用于检测建议选择的事件。您可以尝试查看 DOM 突变观察者,但我不确定这些覆盖属性是否发生变化,而且到目前为止对该 API 的支持很少。

因此,如果您真的需要处理这种情况,那么我认为这setInterval是您唯一的选择。

编辑:3 年后,您可以propertychange在新接受的答案中使用 jQuery(我假设它在幕后使用突变观察者)。

于 2012-06-15T10:49:34.377 回答
3

替代解决方案禁用自动完成并处理其他事件,如 keyup、keydown 等

<input type="text" name="foo" autocomplete="off" /> 
于 2016-08-15T14:50:19.923 回答
0

更改事件似乎工作正常,但确实需要您点击离开

于 2014-03-10T00:09:14.407 回答