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