2017-08-25 100 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

感謝您的指點,但不幸的是,這並沒有幫助完成註冊的提醒。驗證功能的目的是在檢查完所有必填字段之後發出警報/消息,並確保僅根據選擇器變量驗證必要的字段。 –