javascript - 使用 JQuery Validate 验证 'mm-dd-yyyy' 和 'mm/dd/yyyy' 格式的日期

标签 javascript php jquery validation jquery-ui

使用 JQuery Validate 验证“mm-dd-yyyy”和“mm/dd/yyyy”格式的日期。

我已尝试使用一种格式使用此代码,但是,我的代码(如下所示)不适用于“mm-dd-yyyy”和“mm/dd/yyyy”格式。 我的代码:

$(document).on('blur','.dateValidation',function(){ 

            var input=$(this).val();
            var r = /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
            if(!r.test(input)) {
              alert("Invalid Input");
              return;
            }
            var a = input.match(r), d = new Date(a[3],a[1] - 1,a[2]);
            if(d.getFullYear() != a[3] || d.getMonth() + 1 != a[1] || d.getDate() != a[2]) {
              alert("Invalid Date");
              return;

            } 
    }); 

最佳答案

您可以将您支持的日期格式放入一个数组中并对其进行循环。例如,使用这样的函数:

function isValidDate(input) {
  var regexes = [
    /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/,
    /^(\d{1,2})\-(\d{1,2})\-(\d{4})$/
  ];

  for (var i = 0; i < regexes.length; i++) {
    var r = regexes[i];
    if(!r.test(input)) {
      continue;
    }
    var a = input.match(r), d = new Date(a[3],a[1] - 1,a[2]);
    if(d.getFullYear() != a[3] || d.getMonth() + 1 != a[1] || d.getDate() != a[2]) {
      continue;
    }
    // All checks passed:
    return true;
  }

  return false;
}

然后你从代码中调用它,如下所示:

$(document).on('blur','.dateValidation',function(){ 
  var isValid = isValidDate($(this).val());
  if (isValid) {
    alert('Valid date');
  } else {
    alert('Invalid date');
  }
});

关于javascript - 使用 JQuery Validate 验证 'mm-dd-yyyy' 和 'mm/dd/yyyy' 格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40762618/

相关文章:

javascript - 如何从 PHP 文件获取 ajax 结果值

javascript - jQuery 插件 : ":hover" doesnt work in IE8

javascript - 从 webpack 包中排除 less-loader

javascript - 这个网页的滚动效果是怎么实现的呢?

php - 如何将-SELECT-放入选择菜单

php - 导航下拉列表有时会消失

jQuery 如何让选择更改以多种形式工作?

javascript - AJAX 请求中的“文档元素后的垃圾”错误

javascript - Javascript RegEx 查询

javascript - 在react-redux-promise应用程序中解析XML