您好我的所有代码在逐个测试时效果很好但是当我将它们全部插入到一起时如果第一个IF语句到达它将返回true并提交表单而不验证其他人..有人可以告诉我如何更改我的代码,所以它会在返回true之前运行所有的IF语句。
这是我的代码
if (this.element.find('#visitdate').length > 0) {
var dateParts = $('#tvisitdate').val().split('/');
var check = new Date(dateParts[2], dateParts[1]-1, dateParts[0], 0,0,0,0);
var d = new Date();
var today = new Date(d.getFullYear(), d.getMonth(), d.getDate());
if (today.getTime() > check.getTime() ) {
_errMsg = "Please enter a future visit date";
return false;
} else {
return true;
}
}
if (this.element.find('#birthdate').length > 0) {
var dateParts1 = $('#birthdate').val().split('/');
var check1 = new Date(dateParts1[2], dateParts1[1]-1, dateParts1[0], 0,0,0,0).getFullYear();
var today1 = new Date();
var year = today1.getFullYear();
if (check1 >= year) {
_errMsg = "Please enter a valid date of birthday";
return false;
} else {
return true;
}
}
答案 0 :(得分:3)
使用布尔(true / false)变量,然后在代码末尾返回该变量。这样你只有一个return语句:
var check_no_error = true;
if (this.element.find('#visitdate').length > 0) {
var dateParts = $('#tvisitdate').val().split('/');
var check = new Date(dateParts[2], dateParts[1]-1, dateParts[0], 0,0,0,0);
var d = new Date();
var today = new Date(d.getFullYear(), d.getMonth(), d.getDate());
if (today.getTime() > check.getTime() ) {
_errMsg = "Please enter a future visit date";
check_no_error = false;
}
}
if (this.element.find('#birthdate').length > 0) {
var dateParts1 = $('#birthdate').val().split('/');
var check1 = new Date(dateParts1[2], dateParts1[1]-1, dateParts1[0], 0,0,0,0).getFullYear();
var today1 = new Date();
var year = today1.getFullYear();
if (check1 >= year) {
_errMsg = "Please enter a valid date of birthday";
check_no_error = false;
}
}
return check_no_error;
答案 1 :(得分:0)
在这种情况下你应该not use return for each if condition
更好地为首先分配一个布尔值,无论是真还是假。如果值为true,则处理第二个if条件,并根据条件将值更改为true,并在最后返回该值,您将没事。