您可以轮询输入的值。这会降低效率和响应速度,但可能更可靠。
正如您所指出的,当输入的值被清除时,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>
注意:您需要使您的脚本可访问网络,以便浏览到 http://www.your-site.com/path/to/someScript.js 可以访问该脚本。
脚本标签位于正文的底部,以便页面首先加载实际内容,然后再加载脚本。这将意味着您的用户可以更快地看到您的内容。
您应该对 jsFiddle 中的 JavaScript 进行最后一次修改。 jsFiddle 的代码运行“onDomReady”(见小提琴的左上角)。从技术上讲,如果您在内容之后有脚本,则不需要这样做。它的存在是为了确保脚本在内容加载后运行,这样如果脚本试图在 DOM 中查找元素,它们就会被加载并被找到。您可能应该将此添加到脚本中,以防(出于某种原因)您将脚本移动到内容之前。为了将您的脚本包装在 jQuery 中的 dom 就绪处理程序中,请执行以下操作:
$(function(){
// my code
});
在该示例中,只有在页面准备就绪时才会运行 //my code 注释所在的代码。