自动完成时触发的任何事件?

Exp*_*lls 68 html javascript jquery autocomplete

我有一个非常简单的形式.当用户键入输入字段时,我想更新他们在页面上其他位置键入的内容.一切正常.我已经绑定的更新的keyup,changeclick事件.

唯一的问题是如果您从浏览器的自动完成框中选择一个输入,它就不会更新.从自动完成中选择时是否会触发任何事件(显然既不是change也不是click).请注意,如果您从自动完成框中选择并模糊输入字段,则会触发更新.我希望它能在自动完成后立即触发.

请参阅:http://jsfiddle.net/pYKKp/(希望您过去使用名为"email"的输入填写了很多表单).

HTML:

<input name="email" /> 
<div id="whatever">&lt;whatever></div> 
Run Code Online (Sandbox Code Playgroud)

CSS:

div { 
    float: right; 
} 
Run Code Online (Sandbox Code Playgroud)

脚本:

$("input").on('keyup change click', function () { 
   var v = $(this).val(); 
    if (v) { 
     $("#whatever").text(v);   
    }  
    else { 
        $("#whatever").text('<whatever>'); 
    } 
}); 
Run Code Online (Sandbox Code Playgroud)

Xav*_*avi 68

我推荐使用monitorEvents.它是由web检查器firebug中的javascript控制台提供的函数,它打印出元素生成的所有事件.以下是您如何使用它的示例:

monitorEvents($("input")[0]);
Run Code Online (Sandbox Code Playgroud)

在您的情况下,input当用户从自动完成下拉菜单中选择一个项目时,Firefox和Opera都会生成一个事件.在IE7-8中change,在用户更改焦点后生成事件.最新的Chrome确实会产生类似的事件.

可以在此处找到详细的浏览器兼容性图表:https:
//developer.mozilla.org/en-US/docs/Web/Events/input

  • 我刚刚测试了`input`事件,它适用于我安装的所有浏览器.版本:Firefox 21.0,Opera 12.15,Chrome 27,Safari 5.1.7和IE 9. (3认同)
  • 谢谢,这至少对Firefox有帮助.`change`事件似乎仍然在模糊时触发,所以我不需要看模糊. (2认同)

Ana*_*ngh 18

这是一个很棒的解决方案.

$('html').bind('input', function() {
    alert('test');
});
Run Code Online (Sandbox Code Playgroud)

我使用Chrome和Firefox进行了测试,它也适用于其他浏览器.

我尝试了许多具有许多元素的事件,但只有当您从自动完成中选择时才触发此事件.

希望它能节省一些时间.

  • 我使用`$input.on('keyup input change paste', callback)`。效果很好。 (2认同)

Kar*_*eem 5

添加“模糊”。适用于所有浏览器!

$("input").on('blur keyup change click', function () {
Run Code Online (Sandbox Code Playgroud)

  • 当您自动完成输入时,这些事件都不会触发。阅读 OP。 (4认同)