您可以轮询输入的值。这会降低效率和响应速度,但可能更可靠。
正如您所指出的,当输入的值被清除时,keyup 事件不一定会触发。如果他们用鼠标突出显示文本,右键单击并剪切怎么办?
change 事件可能会有所帮助,但它仍然不是那么可靠。它仅在模糊时触发,并且会错过一些更改(例如自动完成选择)。
这是一个演示轮询解决方案的 jsFiddle。
为了回应 Eng.Fouad 的评论,这里是如何添加 JS:
你可以把它放在一个脚本标签中,像这样:
<script type="text/javascript">
//my code
</script>
这会起作用,但这意味着您用户的浏览器不会缓存 JavaScript,这意味着加载您的页面需要更长的时间。将脚本与内容分开也更清晰。但是如果你想要一个快速简单的选择,这应该可以。把它放在你身体的底部,然后把它包在一个 dom ready 处理程序中(见答案的底部)。
作为一个更简洁的选择,您可以将它放在一个外部文件中,例如 someScript.js,其内容将是您的 JavaScript(没有脚本标签)。然后从 HTML 文件链接到该脚本:
<html>
<head></head>
<body>
<!-- contents of page -->
<script type="text/javascript" src="/path/to/someScript.js"></script>
</body>
</html>
注意:您需要使您的脚本网络可访问,以便浏览http://www.your-site.com/path/to/someScript.js
访问脚本。
脚本标签位于正文的底部,因此页面首先加载实际内容,然后加载脚本。这意味着您的内容可以更快地对您的用户可见。
您应该对 jsFiddle 中的 JavaScript 进行最后一次修改。jsFiddle 有运行“onDomReady”的代码(见小提琴的左上角)。从技术上讲,如果您在内容之后拥有脚本,则无需执行此操作。它用于确保脚本在内容加载后运行,以便如果脚本尝试在 DOM 中查找元素,则它们已被加载并被找到。您可能应该将此添加到脚本中,以防(出于某种原因)您将脚本移动到内容之前。为了将您的脚本包装在 jQuery 中的 dom 就绪处理程序中,请执行以下操作:
$(function(){
// my code
});
在该示例中,//my code
仅当页面准备就绪时,才会运行放置在注释位置的代码。