我有一个非常简单的表格。当用户在输入字段中键入内容时,我想更新他们在页面上其他位置键入的内容。这一切都很好。我已经绑定的更新的keyup,change和click事件。
keyup
change
click
唯一的问题是,如果您从浏览器的自动完成框中选择一个输入,则该输入不会更新。从自动完成功能中进行选择时,是否会触发任何事件(显然既不是change也不是click)。请注意,如果您从“自动完成”框中选择并 模糊 了输入字段,则将触发更新。我希望自动完成会立即触发它。
<input name="email" /> <div id="whatever"><whatever></div>
div { float: right; }
$("input").on('keyup change click', function () { var v = $(this).val(); if (v) { $("#whatever").text(v); } else { $("#whatever").text('<whatever>'); } });
我建议使用monitorEvents。它是Web检查器和Firebug中的javascript控制台提供的功能,可打印出由元素生成的所有事件。以下是使用方式的示例:
monitorEvents
monitorEvents($("input")[0]);
在您的情况下,input当用户从自动完成下拉列表中选择一项时,Firefox和Opera都会生成一个事件。在IE7-8中change,用户更改焦点后会产生一个事件。最新的Chrome确实会产生类似事件。
input