在使用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。因此,如果您能帮助我们忽略验证中隐藏的下拉列表,我们将不胜感激