我有一个文本类型输入字段和一个复选框。 如果我更改文本然后在输入框外单击(或按Enter或tab),则会抛出更改事件。但是,如果我输入一些文本,然后使用鼠标直接单击该复选框,则只会抛出复选框更改事件。
我有以下代码:
<input type="text" name="text" class="update">
<input type="checkbox" name="check" class="update">
和这个jQuery:
$('.update').change(function(){
console.log($(this));
});
这是一个已知问题,如何确保在此设置中触发/抛出/捕获所有更改事件?
答案 0 :(得分:1)
更改事件会因为您正在侦听更新类而触发。
答案 1 :(得分:1)
我不确定我是否明白了。但对我来说,当我尝试键入文本字段然后单击复选框时,两个事件都会被触发。但是你必须记住,文本输入的事件“改变”意味着这个输入必须失去焦点,只要场被聚焦,就不会触发任何改变事件。这可能是你的情况。复选框/放射线框以不同的方式工作。无需失去焦点。
干杯。
P.S。 我的测试用例: http://dl.dropbox.com/u/196245/index16.html
答案 2 :(得分:1)
除非输入焦点切换到其他控件
,否则不会触发更改事件答案 3 :(得分:0)
要解除用户更改,请使用输入事件:
$('input').on('input',function(){...})
要解除代码更改,请使用DOMSubtreeModified事件:
$('input').bind('DOMSubtreeModified',function(){...})
如果您要激活 用户和代码更改:
$('input').bind('input DOMSubtreeModified',function(){...})
DOMSubtreeModified事件被标记为已弃用,有时会耗费大量CPU时间,但在仔细使用时也可能非常有效...