JavaScript中的生日验证

JavaScript中的生日验证,javascript,html,validation,date,Javascript,Html,Validation,Date,我正在尝试验证生日日期,但我只能验证是否全部填写。 如果我只选择了日期,则没有警报(“必须选择日期/必须选择月份”)。 我无法验证日期。。。 如何运行此验证 函数isbday(日、月、年){ var mth=月; var dy=天; var yr=年; 如果((mth12)); 如果((dy31)); 如果((mth==4)| |(mth==6)| |(mth==9)| |(mth==11))&(dy>30)); 否则,如果((mth==2)&((yr%400)==0)| |((yr%4)==

我正在尝试验证生日日期,但我只能验证是否全部填写。 如果我只选择了日期,则没有警报(“必须选择日期/必须选择月份”)。 我无法验证日期。。。 如何运行此验证

函数isbday(日、月、年){
var mth=月;
var dy=天;
var yr=年;
如果((mth<1)|(mth>12));
如果((dy<1)|(dy>31));
如果((mth==4)| |(mth==6)| |(mth==9)| |(mth==11))&(dy>30));
否则,如果((mth==2)&((yr%400)==0)| |((yr%4)==0)&((yr%100)!=0)&((yr%100)!=0)&((日>29));
如果((mth==2)和((yr%100)==0)和((dy>29));
否则,如果((mth==2)和(&(dy>28))有效=false;
返回false;
警告(“必须填写出生日期”);
}
函数验证(){
var day=document.getElementsByName(“xday”)[0]。值;
var month=document.getElementsByName(“xmonth”)[0]。值;
var year=document.getElementsByName(“xyear”)[0]。值;
如果(日、月、年==null | |日、月、年==“”){
警告(“必须填写出生日期”);
}else if(birthdate.match(isbday(birthdate))){
警告(“必须填写出生日期”);
}否则
{
警报(“生日成功”);
}
}

生日
日期
var myDate=新日期();
var year=myDate.getFullYear();
对于(变量i=1;i<32;i++){
文件。写入(“”+i+“”);
}
月
var myDate=新日期();
var year=myDate.getFullYear();
对于(变量i=1;i<13;i++){
文件。写入(“”+i+“”);
}
年
var myDate=新日期();
var year=myDate.getFullYear();
对于(变量i=1950;i
我认为最好的方法是根据所选月份更改日期选择,但如果您仍然想用同样的方法:

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

每个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");
  }
}
功能可用(日、月、年){
var mth=月;
var dy=天;
var yr=年;
//检查
如果((mth<1)|(mth>12))返回false;
否则如果((dy<1)|(dy>31))返回false;
否则如果((mth==4)| |(mth==6)| |(mth==9)| |(mth==11))&&(dy>30))返回false;
否则,如果((mth==2)和((yr%400)==0)| |((yr%4)==0))和((yr%100)!=0)和(&(day>29))返回错误;
否则,如果((mth==2)和((yr%100)==0)和(&(dy>29))返回false;
否则如果((mth==2)和(&(dy>28))返回false;
//通过所有检查
返回true;
}
函数验证(){
var day=document.getElementsByName(“xday”)[0]。值;
var month=document.getElementsByName(“xmonth”)[0]。值;
var year=document.getElementsByName(“xyear”)[0]。值;
//如果一个是空的
如果(日、月、年===null | |日、月、年===“”){
警报(“必须填写出生日期\n日期、月份、年份为空”);
} 
//如果不是有效日期
如果(!i有效(日、月、年)){
警报(“出生日期未生效”);
} 
//一切都好:)
否则{
警报(“生日成功”);
}
}

工作示例

是否要在输入日期之前禁用“注册”按钮,还是希望未填写出生日期各部分的警报?我不太明白您的要求。标签中的required属性可能会有所帮助?