在使用javascript进行验证时,如何忽略隐藏的页面元素

在使用javascript进行验证时,如何忽略隐藏的页面元素,javascript,validation,drop-down-menu,Javascript,Validation,Drop Down Menu,基本上我有出席是或否。 如果选择“否”,则下拉菜单将隐藏 但单击“提交”时仍会发生验证错误。验证时是否有忽略隐藏元素的方法 我的页面脚本 1. <SCRIPT LANGUAGE="JavaScript"'> 2. <!-- 3. function validateForm(){ 4. if(document.colour.list1.selectedIndex==0) 5. { 6. alert("Please select an Item.

基本上我有出席是或否。 如果选择“否”,则下拉菜单将隐藏

但单击“提交”时仍会发生验证错误。验证时是否有忽略隐藏元素的方法

我的页面脚本

    1.    <SCRIPT LANGUAGE="JavaScript"'>
2.    <!--
3.   function validateForm(){
4.   if(document.colour.list1.selectedIndex==0)
5.   {
6.   alert("Please select an Item.");
7.   document.colour.list1.focus();
8.   return false;
9.   }
10.   return true;
11.   }
12.   //-->
13.  
14. 
15.</script>
16.<script type="text/javascript">
17.window.onload=registerEventHandlers;
18. function registerEventHandlers()             
19.{
20.        document.getElementById("radio1").onclick = function(){
21.                hideDiv(this,"list1")             
22.         };             
23.         document.getElementById("radio2").onclick = function(){
24.                showDiv(this,"list1")                    
25.         };                           
26. }              
27. 
28. function showDiv(targetElement,toggleElementId){                    
29. 
30.         var showAll=document.getElementsByTagName("div"),
31.             i,
32.             re = new RegExp('\\b' + toggleElementId + '\\b');
33.         for(i=0; i < showAll.length; i++){
34.           if (re.test(showAll[i].className)) {
35.               showAll[i].style.visibility="visible";
36.               showAll[i].style.display="block";
37.           }
38.        }                         
39.}            
40.function hideDiv(targetElement,toggleElementId){                
41.        var hideAll=document.getElementsByTagName("div"),
42.            i,
43.            re = new RegExp('\\b' + toggleElementId + '\\b');
44.        for(i=0; i < hideAll.length; i++){
45.            if (re.test(hideAll[i].className)) {
46.               hideAll[i].style.visibility="hidden";
47.               hideAll[i].style.display="none";
48.            }
49.        }                            
50.} 
51.</script>
52. 
53. 
54. 
55.Yes:<input type="radio" id="radio2" name="yesNo" value="yes" />
56.No:<input type="radio" id="radio1" name="yesNo" value="no"/>
57.<div class="list1" style="display: none;" >
58.        <select name="colour">
59.          <option>Please Select</option>
60.          <option>red</option>
61.            <option>orange</option>
62.            <option>blue</option>
63.        </select>
64.</div>
65.  <div class="list1" style="display: none;" >
66.<select name="shade">
67.  <option>Please Select</option>
68.  <option>dark</option>
69.    <option>light</option>
70.</select>
71.</div>

1 您只需更改javascript代码来检查这些项目是否隐藏,如果它们隐藏,则跳过验证代码。您必须向我们展示它们是如何隐藏的,您的HTML是什么,以便我们提供最简单的方法来检测它们是否被隐藏


另外,您应该知道,隐藏项仍将随表单提交一起发送,因此您可能需要确保服务器知道哪些数据预期有效,哪些无效(因为它是隐藏的)。

如果您选择使用jQuery,我建议您这样做。那就这么简单了

if($(element).is(":visible")){

}

当然,您需要将“element”替换为您正在测试以进行验证的元素。

您应该研究使用jQuery进行验证,这比直接使用javascript容易得多。@thenetimp-您应该将该注释作为对用户问题的注释发送给用户1188711,不是作为对我答案的评论。我想我使用堆栈溢出的方式是,如果我添加到评论或解决方案中,我会将评论添加到正确的答案中,而不是淹没新的答案。所以我试着把它指向他,只是觉得不需要一个新的答案,因为你的答案是正确的。@thenetimp-我没有提出新的答案。我建议你对OP的问题发表评论,而不是对我的回答发表评论。这将评论指向OP,而不是我,这似乎是你的目标。我已经编辑了我的帖子,并添加了html和java。我很高兴现在能使用javascript。因此,如果您能帮助我们忽略验证中隐藏的下拉列表,我们将不胜感激