除非输入所有数据,否则不要提交

Don't submit unless all data is entered

我有一个注册页面的功能,如果用户没有输入所需的数据,它会提醒用户填写。表单仍然提交信息,但我不确定我在做什么错误的。我希望它在所有数据都提交并正确无误后才提交。

function checkdetails()
{
    if (document.form1.txtname.value == "")
    {alert("Please fiill in your forename.");
    }
    if (document.form1.txtsurname.value == "")
    {alert("Please fill in your surname.");
    }
    if (document.form1.txtusername == "")
    {alert("Please create a username.");
    }
    if (document.form1.DOBDay.selectedIndex == 0)
    {alert("Please select the day you were born.");
    }
    if (document.form1.DOBMonth.selectedIndex == 0)
    { alert("Please select the month you were born");
    }
    if (document.form1.DOBYear.selectedIndex == 0)
    {alert("Please fill in the year you were born.");
    }
    if (document.form1.txtemail.value == "")
    {alert("Please enter your e-mail address.");
    }
    if (document.form1.terms.checked == false)
    {alert("Please tick that you have read the Terms and Conditions.");
    }
}
<form action="Home.html" method="post" name="form1" onsubmit="Display()">
  <table bgcolor="white" width="700" border="0" align="center">
  <col width="200">
  <col width="200">


    <tr>
    <th colspan = "2" align = "center" bgcolor="grey"> Fill the form to sign up. </th>
    </tr>
<tr>
    <td>&nbsp;</td>
    </tr>


    <tr>
    <td colspan="2" style="font-size:12px">Fields marked with * are mandatory</td>
    </tr>


    <tr>
    <td>&nbsp;</td>
    </tr>


    <tr>
      <td>Forename*</td>
      <td>Surname*</td>
    </tr>


    <tr>
      <td><label>
        <input type="text" name="txtname" id="txtname" class="info" />
      <td><label>
        <input type="text" name="txtsurname" id="txtsurname" class="info" />
      </label></td>
    </tr>

    <tr>
    <td> Create Username*</td>
    <td> Birthday</td>
    </tr>

    <tr>
    <td><label>
    <input type="text" name="txtusername" id="txtusername" class="info"/>
    </label></td>




    <td><select name="DOBMonth">
    <option>    Month  </option>
    <option value="January">January</option>
    <option value="Febuary">Febuary</option>
    <option value="March">March</option>
    <option value="April">April</option>
    <option value="May">May</option>
    <option value="June">June</option>
    <option value="July">July</option>
    <option value="August">August</option>
    <option value="September">September</option>
    <option value="October">October</option>
    <option value="November">November</option>
    <option value="December">December</option>
</select>

<select name="DOBDay">
    <option> Day </option>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>
    <option value="27">27</option>
    <option value="28">28</option>
    <option value="29">29</option>
    <option value="30">30</option>
    <option value="31">31</option>
</select>

<select name="DOBYear">
    <option> Year </option>
    <option value="2016">2016</option>
    <option value="2015">2015</option>
    <option value="2014">2014</option>
    <option value="2013">2013</option>
    <option value="2012">2012</option>
    <option value="2011">2011</option>
    <option value="2010">2010</option>
    <option value="2009">2009</option>
    <option value="2008">2008</option>
    <option value="2007">2007</option>
    <option value="2006">2006</option>
    <option value="2005">2005</option>
    <option value="2004">2004</option>
    <option value="2003">2003</option>
    <option value="2002">2002</option>
    <option value="2001">2001</option>
    <option value="2000">2000</option>
    <option value="1999">1998</option>
    <option value="1998">1998</option>
    <option value="1997">1997</option>
    <option value="1996">1996</option>
    <option value="1995">1995</option>
    <option value="1994">1994</option>
    <option value="1993">1993</option>
    <option value="1992">1992</option>
    <option value="1991">1991</option>
    <option value="1990">1990</option>
    <option value="1989">1989</option>
    <option value="1988">1988</option>
    <option value="1987">1987</option>
    <option value="1986">1986</option>
    <option value="1985">1985</option>
    <option value="1984">1984</option>
    <option value="1983">1983</option>
    <option value="1982">1982</option>
    <option value="1981">1981</option>
    <option value="1980">1980</option>
    <option value="1979">1979</option>
    <option value="1978">1978</option>
    <option value="1977">1977</option>
    <option value="1976">1976</option>
    <option value="1975">1975</option>
    <option value="1974">1974</option>
    <option value="1973">1973</option>
    <option value="1972">1972</option>
    <option value="1971">1971</option>
    <option value="1970">1970</option>
    <option value="1969">1969</option>
    <option value="1968">1968</option>
    <option value="1967">1967</option>
    <option value="1966">1966</option>
    <option value="1965">1965</option>
    <option value="1964">1964</option>
    <option value="1963">1963</option>
    <option value="1962">1962</option>
    <option value="1961">1961</option>
    <option value="1960">1960</option>
    <option value="1959">1959</option>
    <option value="1958">1958</option>
    <option value="1957">1957</option>
    <option value="1956">1956</option>
    <option value="1955">1955</option>
    <option value="1954">1954</option>
    <option value="1953">1953</option>
    <option value="1952">1952</option>
    <option value="1951">1951</option>
    <option value="1950">1950</option>
    <option value="1949">1949</option>
    <option value="1948">1948</option>
    <option value="1947">1947</option>
</select>




    <tr>
      <td>Email*</td>
      <td>Confirm Email*</td>
    </tr>


    <tr>
      <td><label>
        <input type="text" name="txtemail" id="txtemail" class="info" onchange="ValidateEmail(txtemail)" />
      <td><label>
        <input type="text" name="txtemail2" id="txtemail2" class="info" onchange="ValidateEmail2(txtemail2)"/>
      </label></td>
    </tr>


    <tr>
      <td>Password*</td>
      <td>Confirm Pasword*</td>
    </tr>


    <tr>
      <td><label>
        <input type="password" name="txtpassword" id="txtpassword" class="info"/>
      <td><label>
        <input type="password" name="txtpassword2" id="txtpassword2" class="info"/>
      </label></td>
    </tr>


    <td colspan="2" style="font-size:12px">**Passwords must be at least 8 characters in lenght.</td>
    </tr>

    <tr>
    <td>&nbsp;</td>
    </tr>


      <tr>
      <td colspan="2">
        <label>
          <input type="checkbox" name="terms" value="terms" id="terms" />
          I agree to the Terms and Conditions</label>
        </td></tr>
        <br><br><br>
        <tr>
        <td colspan="2"><label>
          <input type="checkbox" name="notify" value="notify" id="notify" />
          I want to receive notifications by text/email about new products in stock.</label>
          </td>
    </tr>


    <tr>
    <td>&nbsp;</td>
    </tr>

     <tr>
    <td><label>
      <input type="submit" name="Login" id="Login" value="Login" onclick="checkdetails()" />
    </label></td>
    <td><label>
      <input type="reset" name="Reset" id="Reset" value="Reset" />
    </label></td>
  </tr>

    <tr>
    <td>&nbsp;</td>
    </tr>
  </table>
</form>

return 错误;应该阻止它执行它的操作。

<form name="testForm" onsubmit="return validate();"> 

<script type="text/javascript">
function validate()
{
  if(check if your conditions are not satisfying)
  { 
    alert("validation failed false");
    returnToPreviousPage();
    return false;
  }

  alert("validations passed");
  return true;
}
</script>

但是,如上面的回答所述,html5 必需属性是最佳做法。不过,您需要考虑的不仅仅是空字段。例如,需要正则表达式检查您的电子邮件字段等

http://www.html5-tutorials.org/form-validation/validating-email/

最好使用 html5 需要的属性!

<input type="text" name="input" required >