这个项目缺少什么?即使字段为空,表单也会被接受

What is missing in the program? The form gets accepted, even if the fields are left empty

本文关键字:表单 字段 项目 什么      更新时间:2023-09-26
    <form name="form" method="post" action="thanks.html" onsubmit="final()">
            <div id="errorBox"> </div>
            <div class="marginn">                               
                                                <input type="name" name="name" value="" placeholder="name" size="40" /></br>
                                                <input type="email" name="email" placeholder="email" size="40" value="" /></br>

            <div><b>Birthday</b>
            <select name="birthday_month" >
              <option value="" selected >Month</option>
              <option value="1">Jan</option>
              <option value="2">Feb</option>
              <option value="3">Mar</option>
              <option value="12">Dec</option>
            </select>
              <select name="birthday_day" >
              <option value="" selected>Day</option>
              <option value="1">1</option>
        </select>
            &nbsp;&nbsp;
            <select name="birthday_year">
              <option value="" selected>Year</option>
              <option value="2009">2009</option>
            </select>
        </div>
    <input type="submit" name="submit" value="submit"/>
    </form>

''the javascript code for validation is 
使用下面给出的javascript代码验证上面的html表单。即使字段填写错误或为空,也会提交表单。请告诉我错过了什么。提前感谢。:)
function final(){
 var emailRegex = /^[A-Za-z0-9._]*'@[A-Za-z]*'.[A-Za-z]{2,5}$/;
 var name = document.form.name.value;
 var femail = document.form.email.value;
 var fmonth = document.form.birthday_month.value;
   var fday = document.form.birthday_day.value;
   var fyear = document.form.birthday_year.value;

 if( name == null || name== "")
   {
     document.form.name.focus() ;
     //document.getElementById("errorBox").innerHTML = "enter the first name";
     alert("Name Empty");
     return false;
   }
   if (femail == null || femail== "" )
 {
  document.form.email.focus();
  document.getElementById("errorBox").innerHTML = "enter the email";
  alert("please enter Email");
  return false;
  }
  else if(!emailRegex.test(femail)){
  document.form.email.focus();
  document.getElementById("errorBox").innerHTML = "enter the valid email";
  return false;
  }
   if (fmonth == null|| fmonth=="") {
        document.form.birthday_month.focus();
  document.getElementById("errorBox").innerHTML = "select the birthday month";
        return false;
     }
  if (fday == ""|| fday== null) {
        document.form.birthday_day.focus();
  document.getElementById("errorBox").innerHTML = "select the birthday day";
        return false;
     }
  if (fyear == ""||fyear==null) {
        document.form.birthday_year.focus();
  document.getElementById("errorBox").innerHTML = "select the birthday year";
        return false;
     }
  if(document.form.radiobutton[0].checked == false && document.form.radiobutton[1].checked == false){
    document.getElementById("errorBox").innerHTML = "select your gender";
    return false;
   }
  if(name != '' && femail != ''){
      alert("done");
   document.getElementById("errorBox").innerHTML = "form submitted successfully";
  return true;
   }
}
onsubmit="final()"

必须是

onsubmit="return final()"
//        ^^^^^^

可以将onXyz属性样式处理程序的内容视为函数体(一旦浏览器为您完成设置,它最终就是函数体)。就像

function submitHandler() {
    final();
}

…没有从submitHandler返回任何东西,因此false永远不会使它到浏览器的事件代码,onsubmit="final()"也不会从处理程序返回任何东西。