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');});
适合我。