在文本框中选择建议项目时的jQuery事件?

Myo*_*bis 11 javascript jquery javascript-events

我想在用户输入后立即对文本框控件的每次修改运行一个函数.该事件.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'); });
Run Code Online (Sandbox Code Playgroud)

我想尽可能避免使用setInterval()定期检查.

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

die*_*ter 11

绑定propertychange事件:

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

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

});
Run Code Online (Sandbox Code Playgroud)

  • 好极了!谢谢你(即使我现在离这个项目有点远).我注意到,当点击建议的条目(按要求)时它会触发,但是当通过键盘选择它时则不会触发.使用_keyup_注册事件处理程序可能有助于填补这一空白. (2认同)

Gra*_*ham 5

简短的回答是否定,没有检测到建议选择的事件.您可以尝试查看DOM变异观察者,但我不确定这些属性是否有所改变,到目前为止对此API几乎没有支持.

所以,如果你真的需要处理这个案子,那么我认为这setInterval是你唯一的选择.

编辑:3年后,您可以使用propertychangejQuery,因为在新接受的答案中(我假设使用引擎下的变异观察者).