2011-11-30 32 views
0

我試圖做一個函數來檢查,如果所有的輸入都有效的話,我的頁面上的任何東西都會改變。我認爲最好的方法來做到這一點,而不是將函數附加到每個輸入上,而是把它放在整個頁面上(因此html/body標籤),但這似乎並沒有發揮作用。我的代碼如下所示:您可以/是否將這個偶數聽衆添加到<HTML>/<body>標籤的正確方法?

<body onchange="removewarn()"> 
. 
form elements 
. 
. 
</body> 

和功能

function removewarn(){ 

if(all input is valid) 
{ 
document.getElementById('warning').style.visibility="hidden"; 
} 
} 

點,其中,如果所有元素都沒有填寫,或者沒有有效去除把頁面上的警告。

+0

我認爲你的想法很好,但我懷疑身體「onchange」處理程序是正確的機制。考慮使用按鍵處理程序。 – maerics

回答

0

onchange事件只能由輸入,選擇和文字區域支持,至極就是爲什麼你的函數將永遠不會被調用,如果你試圖將其綁定到身體標籤。

您必須在每個輸入上綁定它,或者使用類似jQuery's delegate method的東西。

+0

然後我的問題是:你可以在一個表單元素上有多個「onchange」事件嗎? – Sam

+1

是的,但最好的方法可能是將一個單一的函數綁定到onchange事件,並且如果需要在不同函數中分離您的邏輯,則使用此函數調用其他函數。 – Leo

1

onchange事件只適用於Form元素,因此您必須將其添加到每個表單元素。然而!還有一個更簡單和更清潔的方式做到這一點不是嵌入做:

for(i=0; i<document.FormName.elements.length; i++)//gets all the elements of your form. 
{ 
    document.FormName.elements[i].onchange = removewarn();//adds the removewarn function to the onchange handler of this element. 
} 
相關問題