【问题标题】:Jquery Validate date code failing on some browsersJquery 验证日期代码在某些浏览器上失败
【发布时间】:2017-01-13 15:10:14
【问题描述】:

以下代码与 Jquery Validate 一起用于检查表单上的出生日期。它多年来一直运行良好,在 2016/17 年初失败了,但仅在 IE 和 Chrome 中,Firefox 很好。

经过一番调查,我可以使用 18 作为年龄,而不是 17两位数的年份。 2000 年 1 月 1 日的日期无效。传入的日期是 DD/MM/YYYY。

我不知道如何强制使用四位数的年份来确保无论如何都能正常工作,并且不会在 18 年后的下一年倒下。

> $.validator.addMethod("ValidDOB17", function (value, element) {
    // checking whether the date entered is in correct format
    var isValid = value.match(/^\d\d?\/\d\d?\/\d\d\d\d$/);
    if (isValid) {
        var today = new Date();
        var minyear = new Date();
        today.setYear(today.getYear() - 17);
        minyear.setYear(today.getYear() - 82);
        var DOB = Date.parse(value);
        if (DOB >= today || DOB <= minyear ) {
            isValid = false;
        }
        return isValid;
    }
}, "You must be aged over 17");

【问题讨论】:

  • 使用.getFullYear() 而不是.getYear()

标签: javascript jquery date jquery-validate


【解决方案1】:

使用getFullYear()setFullYear()getYear()setYear() 方法已弃用 - 它们被要求返回 2000 年之前的两位数年份。

var value = '01/13/2000';
var isValid = /^\d\d?\/\d\d?\/\d\d\d\d$/.test(value);

if (isValid) {
  var today = new Date();
  var minyear = new Date();
  today.setFullYear(today.getFullYear() - 17);
  minyear.setFullYear(today.getFullYear() - 82);
  var DOB = Date.parse(value);
  if (DOB >= today || DOB <= minyear) {
    isValid = false;
  }
  console.log(value + (isValid ? ' is valid' : ' is invalid'));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多