2011-03-28 19 views
0

onclick我有一個函數,當使用滑塊時,它將更改文本框的值。它被傳遞,其具有文本框以更新爲一個值的事件變量:手動觸發一個文本框傳入參數

function updateTextBox(e){ 
    $(e.data.textbox).val($(this).slider('option','value')); //this line works great 
    $(e.data.textbox).change(); //this line works fine in Chrome, but not IE. 
} 

要綁定我傳遞函數(簡化):

slinder.bind('slide', {textbox : '#idOftextbox'}, updateTextBox); 

IE只自動執行改變事件第一行,但然後在第二行發出錯誤「對象不支持此對象或方法」。但是Chrome不會通過設置值來自動觸發更改事件,因此需要第二行。任何想法如何解決這個問題,而不訴諸用戶代理檢測。

alert(e.data.textbox.change); //給我所有瀏覽器的函數定義,但不喜歡添加括號。

我甚至試過的eval(e.data.textbox.change)沒有任何的運氣...

只是要注意的。我很滿意我滑塊的工作方式,所以我不想替換它。事件如何「冒泡」到文本框中。

+0

是#idOftextbox唯一的嗎?如果您嘗試觸發表單元素以外的其他事件,可能會導致一些問題。 – Capsule 2011-03-28 13:20:51

+0

[獲取jQuery以識別.change()in IE](http://stackoverflow.com/questions/208471/getting-jquery-to-recognise-change-in-ie) – Kon 2011-03-28 13:20:58

+0

@Capsule #idOftextbox是唯一的,始終是一個輸入元素。不是很重複,因爲這是textb牛的如此回答將無法正常工作,因爲點擊事件與更改不一樣。 – Yule 2011-03-28 13:27:24

回答

0

這是因爲我有兩個綁定到滑塊的事件,我沒有回答這個問題,因爲我認爲它是不相關的。

slider.bind( '滑',... slider.bind( 'slidechange',...

不知道爲什麼錯誤走了,當我擺脫了e.textbox.change的()行,但通過刪除第二個偵聽器來解決它