2011-06-15 59 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

相關問題