文本输入元素没有change事件吗?当我将change事件处理程序附加到文本输入时,它不会被触发。虽然keyup事件可以被触发,但是keyup并不能完全检测到文本的变化,因为还有其他的方式可以输入文本进入输入框。
文本输入元素没有change事件吗?当我将change事件处理程序附加到文本输入时,它不会被触发。虽然keyup事件可以被触发,但是keyup并不能完全检测到文本的变化,因为还有其他的方式可以输入文本进入输入框。
HTML4规范中 <input>
元素 支持以下脚本事件:
onfocus、onblur、onselect、onchange、 onclick、ondblclick、onmousedown、 onmouseup、onmouseover、onmousemove、 onmouseout、onkeypress、onkeydown、 onkeyup。
下面是一个绑定了所有这些事件并展示其功能的示例:http://jsfiddle.net/pxfunc/zJ7Lf/
我认为您可以过滤出与您情况真正相关的事件,并检测事件前后的文本值以确定更改。
paste
和 input
事件,我在这里找到它们后添加了它们,jquery - How to detect right mouse click + paste using JavaScript?... 这是 更新后的 fiddle。 - MikeMinput
似乎是一个一站式的解决方案。 - MikeM我发现这个方法是有效的:
$(document).ready(function(){
$('textarea').bind('input propertychange', function() {
//do your update here
}
})
change事件仅在输入框失去焦点(且内容已更改)后触发。
这个问题没有真正的解决方法 - 即使参考上面给出的其他问题链接。最终我决定使用 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');});
});
change()
第二个文本框将按照答案中所述进行处理。 - Zaheer Ahmed$('#input').on("input",function () {alert('changed');});
对我来说可行。
.change()
。 - Joel Purra