onChange事件未在Chrome中的文本框中触发

我有以下代码绑定一些validation逻辑,当用户更新文本框的值时将触发。 我希望//Do some stuff here代码会在任何文本框被执行时失去焦点。

 function RegisterHoursValidationHandlers() { $('.topic-frame-body input[type=text]').live('change', function () { //Do some stuff here }); } 

这与我在IE,Firefox和Safari中的预期完全一样。 但是,事件永远不会在Chrome中发生,我不知道为什么。

更新:通过将'change''blur'我能够获得所需的效果。 虽然这仍然无法解释为什么它不会出现'change'

关于铬没有已知的怪癖 。 (所有浏览器都支持更改事件)

实时显示它对抗动态内容的示例。

在这里测试一下 :

这里有一条信息或假设使这无法解决。

更新 :如果将其更改为模糊时有效,则可能会覆盖上一个事件或函数。 通过将其更改为模糊,无论是否覆盖它都不再会因为它是一个不同的事件

这也可以解释为什么你没有看到任何错误。 (请记住,我相信jQuery会链接绑定到相同元素的事件,但live()有点特殊 – 但这个事实可能指向它是函数,而不是事件绑定)

尝试使用.delegate()代替http://api.jquery.com/delegate/

我已经尝试过在FF和Chrome中编写代码 – http://jsfiddle.net/B3aRy/ – 它在两者中都有效。 那么也许它在你的代码中的其他地方有问题?

您使用的是什么版本的Jquery?

我自己也看不到这个问题,但是.live直到jquery 1.4+才支持“更改”事件

尝试:

 function RegisterHoursValidationHandlers() { $(".topic-frame-body input[type='text']").live('change', function () { //Do some stuff here }); } 

正如我所说的那样,引用“文本”。 值得一试。

或尝试:

 $(".topic-frame-body input:text").live(); 

关键是,我认为问题在于您如何定位输入字段的细节,而不是在方法中。