文本输入元素没有更改事件吗?当我将更改事件处理程序附加到文本输入时,它不会被触发。键盘被触发,但是键盘不足以检测更改,因为显然有其他方法可以将文本输入到输入中。
答案 0 :(得分:28)
<input>
element的HTML4规范指定了以下脚本事件:
onfocus,onblur,onselect,onchange, onclick,ondblclick,onmousedown, onmouseup,onmouseover,onmousemove, onmouseout,onkeypress,onkeydown, 的onkeyup
这是一个绑定所有这些事件的示例,并显示http://jsfiddle.net/pxfunc/zJ7Lf/
上发生了什么我认为您可以过滤掉与您的情况真正相关的事件,并检测事件之前和之后的文本值以确定更改
答案 1 :(得分:22)
我发现这有效:
$(document).ready(function(){
$('textarea').bind('input propertychange', function() {
//do your update here
}
})
答案 2 :(得分:14)
更改事件仅在输入失去焦点(并且已更改)后触发。
答案 3 :(得分:4)
对此没有真正的解决方案 - 即使在上面给出的其他问题的链接中也是如此。最后我决定使用setTimeout
并调用每秒检查一次的方法!不是一个理想的解决方案,但是我正在调用的解决方案和代码很简单,不会因为一直被调用而对性能产生影响。
function InitPageControls() {
CheckIfChanged();
}
function CheckIfChanged() {
// do logic
setTimeout(function () {
CheckIfChanged();
}, 1000);
}
希望这可以帮助将来的某个人,因为似乎没有使用事件处理程序来实现这一点的确定方法......
答案 4 :(得分:2)
你可以实现它:
$(document).ready(function(){
$('#textBox').keyup(function () {alert('changed');});
});
或更改(右键单击处理复制粘贴):
$(document).ready(function(){
$('#textBox2').change(function () {alert('changed');});
});
这是Demo
答案 5 :(得分:0)
$('#input').on("input",function () {alert('changed');});
适合我。