2011-11-30 34 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. 
} 
相关问题