jQuery文本框更改事件

文本输入元素没有更改事件吗? 当我将更改事件处理程序附加到文本输入时,它不会被触发。 Keyup被触发,但是keyup不足以检测更改,因为显然有其他方法可以将文本输入到输入中。

元素的HTML4规范指定以下脚本事件可用:

onfocus,onblur,onselect,onchange,onclick,ondblclick,onmousedown,onmouseup,onmouseover,onmousemove,onmouseout,onkeypress,onkeydown,onkeyup

这是一个绑定所有这些事件的示例,并显示了正在发生的事情http://jsfiddle.net/pxfunc/zJ7Lf/

我认为您可以过滤掉与您的情况真正相关的事件,并检测事件之前和之后的文本值以确定更改

我发现这有效:

 $(document).ready(function(){ $('textarea').bind('input propertychange', function() { //do your update here } }) 

更改事件仅在输入失去焦点(并且已更改)后触发。

对此没有真正的解决方案 – 即使在上面给出的其他问题的链接中也是如此。 最后我决定使用setTimeout并调用一个每秒检查一次的方法! 不是一个理想的解决方案,但是一个可行的解决方案和我调用的代码很简单,通过一直调用不会对性能产生影响。

 function InitPageControls() { CheckIfChanged(); } function CheckIfChanged() { // do logic setTimeout(function () { CheckIfChanged(); }, 1000); } 

希望这有助于未来的某些人,因为似乎没有使用事件处理程序来实现这一点的可靠方法……

你可以实现它:

  $(document).ready(function(){ $('#textBox').keyup(function () {alert('changed');}); }); 

或更改(右键单击处理复制粘贴):

  $(document).ready(function(){ $('#textBox2').change(function () {alert('changed');}); }); 

这是演示

 $('#input').on("input",function () {alert('changed');}); 

适合我。