Javascript 在我的日期验证中包含前导零
以下是我当前的日期验证功能:Javascript 在我的日期验证中包含前导零,javascript,validation,date,Javascript,Validation,Date,以下是我当前的日期验证功能: isValidDate = function(day,month,year) { var dteDate; dteDate=new Date(year,month,day); return ((day.toString()===dteDate.getDate().toString()) && (month.toString()===dteDate.getMonth().toString()) && (yea
isValidDate = function(day,month,year) {
var dteDate;
dteDate=new Date(year,month,day);
return ((day.toString()===dteDate.getDate().toString()) && (month.toString()===dteDate.getMonth().toString()) && (year.toString()===dteDate.getFullYear().toString()));
}
然后稍后我检查字段:
checkFields = function() {
var iDate = $("inspect_date").value;
if(iDate.length > 0) {
var a = iDate.split("/");
if(isValidDate(a[0],a[1]-1,a[2]) == false){
alert("You have entered an invalid date. Please amend!");
return false;
}
所以目前它不接受dd/mm/yyy格式的日期,这正是我想要的-函数不喜欢前导的零
我试着用这种方式修复它:
isValidDate = function(day,month,year) {
var dteDate;
dteDate=new Date(year,month,day);
var day = dteDate.getDate();
var month = dteDate.getMonth() + 1;
var year = dteDate.getFullYear();
var formatted =
(day < 10 ? "0" : "") + day + "/" +
(month < 10 ? "0" : "") + month + "/" +
year;
return ((day.toString()===dteDate.getDate().toString()) && (month.toString()===dteDate.getMonth().toString()) && (year.toString()===dteDate.getFullYear().toString()));
}
isValidDate=函数(日、月、年){
var dteDate;
dteDate=新日期(年、月、日);
var day=dteDate.getDate();
var month=dteDate.getMonth()+1;
var year=dteDate.getFullYear();
变量格式化=
(天<10?“0”:“)+天+”/“+
(月数<10?“0”:“)+月数+”/“+
年份;
返回((day.toString()==dteDate.getDate().toString())&&&(month.toString()==dteDate.getMonth().toString())&&(year.toString()==dteDate.getFullYear().toString());
}
但是现在我的“return”部分在进行比较时包含了错误的值
有人能帮忙吗?对于示例日期
“02/04/2012”
函数的第一个变体将“02”,3,“2012”
作为参数传递。然后,您的函数尝试将“02”
与“2”
进行比较,这显然是“不相等的”
你应该把数字当作数字来比较。一元+
运算符是将字符串转换为数字的快捷方式(+“01”
产生1
;您也可以使用parseInt
):
使用RERGX和JavaScript日期对象。对于示例日期
“02/04/2012”
函数的第一个变体将“02”,3,“2012”
作为参数传递。然后,您的函数尝试将“02”
与“2”
进行比较,这显然是“不相等的”
你应该把数字当作数字来比较。一元+
运算符是将字符串转换为数字的快捷方式(+“01”
产生1
;您也可以使用parseInt
):
使用RERGX和JavaScript日期对象。您能解释一下+日、+月等的实际含义吗?此外,当我尝试此代码时,仍然会收到“无效日期”警告。在我自己的代码中,您知道我为什么要使用
var month=dteDate.getMonth()+1
?我从其他地方获得了验证代码,但我不理解+1
部分。getMonth()返回基于0的月份数(jan=0,dec=11),其中我们自然假设jan=1,dec=12。将月份转换为自然月的+1。你能解释一下+day、+month等实际是什么吗?此外,当我尝试此代码时,仍然会收到“无效日期”警告。在我自己的代码中,您知道我为什么要使用var month=dteDate.getMonth()+1
?我从其他地方获得了验证代码,但我不理解+1
部分。getMonth()返回基于0的月份数(jan=0,dec=11),其中我们自然假设jan=1,dec=12。将月份转换为自然月的+1。
return
+day === dteDate.getDate() &&
+month === dteDate.getMonth() &&
+year === dteDate.getFullYear();