2011-02-28 47 views
2

如何讓各種表單元素的onChange事件向上滾動到Internet Explorer中的父表單對象?當在IE中選擇框,單選按鈕......幾乎任何東西......變化時,父窗體的onChange都不會被觸發。我的表單正在動態變化,因此通過監聽每個子表單元素很難破解它。在Internet Explorer中創建表單元素onchange氣泡

HTML

<form id="myForm"> 
<select> 
    <option>uno</option> 
    <option>dos</option> 
</select> 
<input type="radio" name="videoDevice" value="tres" checked="checked" /> 
<input type="radio" name="videoDevice" value="cuatro" /> 
</form> 

JS

$('myForm').observe(
'change', 
function() { 
    // this only runs in non-IE browsers 
    alert('the form changed'); 
} 
); 

順便說一句,我使用的原型框架。它不應該爲我處理跨瀏覽器的差異嗎?

回答

1

我不得不使用IE瀏覽器黑客攻擊。我手動使所有的子表單元素觸發onChange回調,而不是讓父表單執行它。我希望有一個更清潔的解決方案。

$('myForm').select('input', 'radio', 'textarea').each(
function(formElement) { 
    formElement.observe(
    'change', 
    function() { 
    alert('changed'); 
    } 
); 
} 
); 
-1

我想你可能在你的代碼有一個簡單的語法錯誤:

$('myForm')應該$('#myForm')

+4

'#'可能在jQuery中使用,但我們不在Prototype中使用它。 – JoJo 2011-02-28 19:54:48

+0

啊,我的錯。不知何故錯過了這部分問題。 – dmackerman 2011-02-28 20:01:07