2017-08-25 94 views
0

以下是我正在开发的项目的完整副本。我在JavaScript中验证表单段以及JavaScript在函数结束时产生警告时遇到了问题。JavaScript中的表单验证和警报问题

这个想法是让函数验证表单,如果你超过18岁:你只需要填写第一个和最后一个名字段。 (只要它有效,内容并不重要。)另一方面,如果你未满18岁,该功能也需要验证监护人的详细信息。

直到最近做了一些更改,但是这个工作正常,问题是我离开了几个星期的项目,所以我不知道能够撤消它们做了哪些更改。理想情况下,基本代码不会有太大的变化,我正在寻找一种可以产生相同效果的快速修复或临时措施。

<html> 
    <head> 
     <meta charset="utf-8"> 
      <title>Work Field Trip Registration</title> 
       <script type="text/javascript"> 
        function HideReveal() { 

        if (document.getElementById("YesNo").selectedIndex == "1") { 
         document.getElementById("ifYes").style.display = "block"; 
         Required(); 
         //alert('1st Option Tested'); 
        } 
        else if (document.getElementById("YesNo").selectedIndex == "0") { 
         document.getElementById("ifYes").style.display = "none"; 
         Required(); 
         //alert('2nd Option Tested'); 
        } 
        } 

        function Required() { 

        if (document.getElementById("YesNo").selectedIndex == "1") { 
         AddRequirement(); 
         //alert("Step1"); 
        } 

        else { 
         NoRequirement(); 
         //alert("Step2"); 
        } 
        } 
        function NoRequirement() { 

        document.getElementById("GuardName").removeAttribute("required"); 
        document.getElementById("GuardPhone").removeAttribute("required"); 
         //alert("Step3"); 
        } 

        function AddRequirement() { 

        document.forms("death")("GuardianName").setAttribute("required", ""); 
        document.forms("death")("GuardianNumber").setAttribute("required", ""); 
         //alert("Step4"); 
        } 

        function validateForm() { 

        var a = document.forms("death")("GuardianName").value; 
        var b = document.forms("death")("GuardianNumber").value; 
        var c = document.forms("death")("FirstName").value; 
        var d = document.forms("death")("LastName").value; 

         if (document.getElementById("YesNo").selectedIndex == "1") 
         { 
          if (a == "" || b == "") { 
           alert("Please fill ALL required fields"); 
          } 

          else { 
           alert("Registration Complete!");  
          } 
         } 

         else if (c == "" || d == "") { 
           alert("Please fill ALL required fields") 
         } 

         else { 
          alert("Registration Complete!") 
         } 

        } 
       </script> 
     </head> 

    <body> 
     <h2>Work Field Trip Registration!</h2> 
     <h4>Please enter your details.</h4> 
     <form name="death"> 
       First Name:<br> 
      <input required type="text" name="FirstName"><br> 
       Last Name:<br> 
      <input required type="text" name="LastName"><br> 
       Gender:<br> 
       <select name="dMenu"> 
        <option>Male</option> 
        <option>Female</option> 
       </select><br><br> 
       Are you under 18? 
       <select id="YesNo" onChange="HideReveal()" name="dMenu"> 
        <option name="OptionNo" id="OptionNo" value="0">No</option> 
        <option name="OptionYes" id="OptionYes" value="1">Yes</option> 
       </select><br><br> 
     <div id="ifYes" style="display:none"> 
      Please enter your Parent/Guardian's name:<br> 
      <input type="text" id="GuardName" name="GuardianName"><br> 
      Please enter your Parent/Guardian's phone number:<br> 
      <input type="text" id="GuardPhone" name="GuardianNumber"><br> 
     </div> 
      <input onClick="validateForm()" type="submit" value="Submit"> 
     </form> 
    </body> 
</html> 
+0

对于格式问题,我表示歉意。我不习惯Stack Overflow以及如何设置元素和细分。 –

回答

0

1)如果您已将字段设置为required,则不需要调用验证。浏览器会为你处理。 2.我想知道为什么在NoRequirement()中使用'getElementbyId',而在AddRequirement()中使用document.forms。 在任何情况下,这是您的代码的修改版本。欢呼声

<html> 

    <head> 
     <meta charset="utf-8"> 
      <title>Work Field Trip Registration</title> 
       <script type="text/javascript"> 
        function HideReveal() { 

        if (document.getElementById("YesNo").selectedIndex == "1") { 
         document.getElementById("ifYes").style.display = "block"; 
         Required(); 
         //alert('1st Option Tested'); 
        } 
        else if (document.getElementById("YesNo").selectedIndex == "0") { 
         document.getElementById("ifYes").style.display = "none"; 
         Required(); 
         //alert('2nd Option Tested'); 
        } 
        } 

        function Required() { 

        if (document.getElementById("YesNo").selectedIndex == "1") { 
         AddRequirement(); 
         //alert("Step1"); 
        } 

        else { 
         NoRequirement(); 
         //alert("Step2"); 
        } 
        } 
        function NoRequirement() { 

        document.getElementById("GuardName").removeAttribute("required"); 
        document.getElementById("GuardPhone").removeAttribute("required"); 
         //alert("Step3"); 
        } 

        function AddRequirement() { 

         document.getElementById('GuardName').setAttribute("required","") 
         document.getElementById('GuardPhone').setAttribute("required","") 

         //alert("Step4"); 
        } 


       </script> 
     </head> 

    <body> 
     <h2>Work Field Trip Registration!</h2> 
     <h4>Please enter your details.</h4> 
     <form name="death"> 
       First Name:<br> 
      <input required type="text" name="FirstName"><br> 
       Last Name:<br> 
      <input required type="text" name="LastName"><br> 
       Gender:<br> 
       <select name="dMenu"> 
        <option>Male</option> 
        <option>Female</option> 
       </select><br><br> 
       Are you under 18? 
       <select id="YesNo" onChange="HideReveal()" name="dMenu"> 
        <option name="OptionNo" id="OptionNo" value="0">No</option> 
        <option name="OptionYes" id="OptionYes" value="1">Yes</option> 
       </select><br><br> 
     <div id="ifYes" style="display:none"> 
      Please enter your Parent/Guardian's name:<br> 
      <input type="text" id="GuardName" name="GuardianName"><br> 
      Please enter your Parent/Guardian's phone number:<br> 
      <input type="text" id="GuardPhone" name="GuardianNumber"><br> 
     </div> 
      <input type="submit" value="Submit"> 
     </form> 
    </body> 
</html> 
+0

感谢您的指点,但不幸的是,这并没有帮助完成注册的提醒。验证功能的目的是在检查完所有必填字段之后发出警报/消息,并确保仅根据选择器变量验证必要的字段。 –