JavaScript 中的出生日期验证

Birthdate Validation in JavaScript

本文关键字:验证 出生日期 JavaScript      更新时间:2023-09-26

我正在尝试验证生日日期,但我只能在全部填写的情况下进行验证。如果我只选择日期,则没有警报("必须选择日期/必须选择月份")。我无法验证日期...如何运行此验证?

function isbday(day,month,year) {
		var mth = month;
		var dy = day;
		var yr = year;
        if((mth < 1) || (mth > 12));
        else if((dy < 1) || (dy > 31));
        else if(((mth == 4) || (mth == 6) || (mth == 9) || (mth == 11)) && (dy > 30));
        else if((mth == 2) && (((yr % 400) == 0) || ((yr % 4) == 0)) && ((yr % 100) != 0) && (day > 29));
        else if((mth == 2) && ((yr % 100) == 0) && (dy > 29));
        else if((mth == 2) && (dy > 28)) valid = false;
    return false;
	alert("Birthdate must be filled");	
}
function validate(){
	 var day = document.getElementsByName("xday")[0].value;
	 var month = document.getElementsByName("xmonth")[0].value;
	 var year = document.getElementsByName("xyear")[0].value;
	 
  if(day,month,year == null || day,month,year == ""){
				 alert("Birthdate must be filled");	
				 
			}else if(birthdate.match(isbday(birthdate))){
				 alert("Birthdate must be filled");	
              }else
				 {
				alert("Birthdate success");
			}
		}
<tr>
		<td >Birthdate        </td>
                    <td><select name="xday"> 
                    <option value="">Date</option>
                    <script>
              var myDate = new Date();
              var year = myDate.getFullYear();
              for(var i = 1; i < 32; i++){
                  document.write('<option value="'+i+'">'+i+'</option>');
              }
              </script>
                    </select>
                    <select name="xmonth">
                    <option value="">Month</option>
                   <script>
              var myDate = new Date();
              var year = myDate.getFullYear();
              for(var i = 1; i < 13; i++){
                  document.write('<option value="'+i+'">'+i+'</option>');
              }
              </script>
                    </select>
                    <select name="xyear">
                    <option value="">Year</option>
                <script>
              var myDate = new Date();
              var year = myDate.getFullYear();
              for(var i = 1950; i < year; i++){
                  document.write('<option value="'+i+'">'+i+'</option>');
              }
              </script>
                </select>
</td>
	</tr>
 <tr>
    <td>
    	<input type="button" name="btnRegis" onClick="validate()" onsub value="Register"/>
       </td>
    </tr>

我认为

最好的方法是根据选择的月份更改日期选择,但如果您仍然想以相同的方式执行此操作:

稍微更改一下您的有效函数

如果无效,则每个 if 语句返回 false

function isVaild(day, month, year) {
  var mth = month;
  var dy = day;
  var yr = year;
  //Checks
  if ((mth < 1) || (mth > 12)) return false;
  else if ((dy < 1) || (dy > 31)) return false;
  else if (((mth == 4) || (mth == 6) || (mth == 9) || (mth == 11)) && (dy > 30)) return false;
  else if ((mth == 2) && (((yr % 400) == 0) || ((yr % 4) == 0)) && ((yr % 100) != 0) && (day > 29)) return false;
  else if ((mth == 2) && ((yr % 100) == 0) && (dy > 29)) return false;
  else if ((mth == 2) && (dy > 28)) return false;
  //Pass all checks
  return true;
}
function validate() {
  var day = document.getElementsByName("xday")[0].value;
  var month = document.getElementsByName("xmonth")[0].value;
  var year = document.getElementsByName("xyear")[0].value;
  //if one is empty
  if (day, month, year === null || day, month, year === "") {
    alert("Birthdate must be filled'nDay, Month, Year is empty");
  } 
  //if not a vaild date
  else if (!isVaild(day, month, year)) {
    alert("Birthdate not vaild");
  } 
  //All good :)
  else {
    alert("Birthdate success");
  }
}

这里的工作示例