javascript - 如何防止日期时间验证中的 future 年份?

标签 javascript jquery jquery-validate

我使用 jQuery 验证插件和 maskedInput 插件对输入进行了自定义日期和时间验证。

有没有办法在自定义验证中进行验证以防止输入大于当前年份的年份?

我的代码:

$("#date").mask("99/99/9999 99:99", {
  placeholder: "mm/dd/yyyy hh:mm"
});
$.validator.addMethod("dateTime", function(value, element) {
  var stamp = value.split(" ");
  var validDate = !/Invalid|NaN/.test(new Date(stamp[0]).toString());
  var validTime = /^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/i.test(stamp[1]);
  return this.optional(element) || (validDate && validTime);
}, "Invalid datetime.");

$('#form').validate({
  rules: {
    date: {
      required: true,
      dateTime: true
    }
  },
  messages: {
    date: {
      required: ""
    }
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.1/jquery.validate.min.js"></script>

<form action='' method='post' id='form'>
  <input type='text' name='date' value='' id='date' placeholder='mm/dd/yyyy hh:mm'>
</form>

最佳答案

添加检查年份的新方法

jQuery.validator.addMethod("minYear", function (value, element) {
    var year = new Date(value).getFullYear();
    var curentYear = new Date().getFullYear();
    return this.optional(element) || year <= curentYear;
}, 'Year can not be greater than current year');

在验证规则中添加相同的内容

$('#form').validate({
  rules: {
    date: {
      required: true,
      dateTime: true,
      minYear: true
    }
  },
  messages: {
    date: {
      required: ""
    }
  }
})

关于javascript - 如何防止日期时间验证中的 future 年份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40510687/

相关文章:

javascript - jsTestDriver + Nant = 测试目录问题

javascript - 如何在滚动列表中选择可见元素

javascript - 为数据库查询结果的每个结果动态创建唯一的链接或按钮

javascript - 按下键时在 jquery/javascript 上玩蛇游戏,蛇移动得更快

javascript - Uint8ClampedArray.from 不是函数

jquery - CSS 在克隆元素中不起作用

jquery - CSS 动画缓慢且缓慢 - CPU 性能?

asp.net-mvc-3 - 使用 bootstrap、Asp.net Mvc 3 和 Backbone 进行火 jquery 不引人注目的验证

javascript - jQuery .validate 规则似乎不适用? (jsfiddle)

Jquery.validate - 一页 - 多个表单,一个提交正常,其他不提交