Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在我的日期验证中包含前导零_Javascript_Validation_Date - Fatal编程技术网

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();