javascript文本输入更改事件未触发

时间:2011-01-13 21:52:34

标签: javascript jquery events onchange

我有一个文本类型输入字段和一个复选框。 如果我更改文本然后在输入框外单击(或按Enter或tab),则会抛出更改事件。但是,如果我输入一些文本,然后使用鼠标直接单击该复选框,则只会抛出复选框更改事件。

我有以下代码:

<input type="text" name="text" class="update">
<input type="checkbox" name="check" class="update">

和这个jQuery:

$('.update').change(function(){
    console.log($(this));
});

这是一个已知问题,如何确保在此设置中触发/抛出/捕获所有更改事件?

4 个答案:

答案 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时间,但在仔细使用时也可能非常有效...