2011-06-15 116 views
0

我有以下代码来绑定某些验证逻辑,以便在用户更新文本框的值时触发。我期望//Do some stuff here代码将在任何绑定的文本框失去焦点时执行。onChange事件不在Chrome中的文本框中触发

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

这和我在IE,Firefox和Safari上的预期完全一样。但是,这个事件从来没有在Chrome中引发火焰,我不知道为什么。

更新:我能够通过将'change'更改为'blur'来获得所需的效果。虽然这仍然不能解释为什么它不与'change'一起工作。

+1

如果它在您将其更改为模糊时起作用,则可能*您正在覆盖之前的事件或功能。通过改变它变得模糊,不管是否覆盖它,都不再会因为它是一个不同的事件。他们显然是不同的事件。 – cgp 2011-06-15 19:01:42

回答

0

尝试使用.delegate(),而不是http://api.jquery.com/delegate/

我试过你的代码在这两个FF和铬 - http://jsfiddle.net/B3aRy/ - 它的工作在这两个。所以也许它是你的代码中的其他地方的问题?

+0

我试过.delegate()和.change(),但都没有给我一个不同的结果。 – Hamman359 2011-06-15 18:12:26

+0

看到我上面更新的答案。 – Alex 2011-06-15 18:17:20

+0

我不会完全惊讶,如果它是由其他问题引起的,因为这是一个非常复杂的用户界面。但是,如果是这样的话,我希望它至少不能在其他浏览器中使用。我没有从Chrome开发人员工具收到任何错误,我通过JSLint运行了JavaScript,没有看到任何我没有想到的事情。 – Hamman359 2011-06-15 18:43:19

2

There's no known quirk about chrome。 (change事件在所有浏览器都支持)

Example with live showing it working against dynamic content.

Test it here

有一条信息或一个假设,这里正在进行的是使这种不可解。

UPDATE:如果它在您将其更改为模糊时起作用,则可能是您覆盖了以前的事件或功能。通过改变它变得模糊,无论是覆盖它不再会因为它是一个a different event

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

0

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

我看不到自己的问题,但.live不支持“改变”事件,直到jQuery的1.4+

+0

我们目前正在使用jQuery 1.4.4 – Hamman359 2011-06-15 18:23:15

+0

这是一个有趣的问题。我会尝试一下jQuery的更高版本。 – cgp 2011-06-15 18:58:41

+1

已更新至jQuery 1.6.1,问题依然存在。 – Hamman359 2011-06-15 19:36:15

0

尝试:

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

与各地报价“文”为我有它。值得一试。

或者试试:

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

问题的关键是,我认为这个问题是你如何针对输入字段,而不是在方法的细节。

+0

我尝试了两条建议,但没有成功。另外,我认为这可能是字段选择器的一个问题,我向所讨论的输入字段添加了一个类,并直接针对该类,即。 $('。foobar'),但那也行不通。 – Hamman359 2011-06-15 18:34:31

+0

试试这个:$(“。topic-frame-body> input [type ='text']”)和其他方式,但使用父级子选择器?我真的认为它是针对输入的。 – 2011-06-15 18:40:11

+0

要么是这个,要么是你的js代码在这个函数之上,那也发布给我们。你在Chrome中使用web开发者工具栏吗?转到脚本标签,看看你是否得到任何js错误。 – 2011-06-15 18:41:00

相关问题