javascript - JQuery 验证日期范围内的日期

标签 javascript jquery jquery-validate

我有一个输入字段,用户可以在其中插入日期范围之间的日期。

所以我在 JQuery 验证器对象上添加了一个新方法:

$.validator.addMethod("dateRange", function(value, element, from, to){
    try {
        var date = new Date(value);
        if(date >= from && date <= to)
            return true;
    } catch(e) {
    }
    return false;
}

然后我添加了新的类规则:

$.validator.addClassRules({
    myDateFieldRangeValidate: {
        dateRange: {fromDate, toDate}
    }
});

最后我将类添加到输入中:

$("#myField").addClass("myDateFieldRangeValidate");

那么,如何将两个日期传递给验证函数?

更新:添加了代码片段

$.validator.addMethod("dateRange", function(value, element, from, to){
    try {
        var date = new Date(value);
        if(date >= from && date <= to)
            return true;
    } catch(e) {
    }
    return false;
});

var fromDate = new Date("2017-02-01");
var toDate = new Date("2017-12-31");

$.validator.addClassRules({
    myDateFieldRangeValidate: {
        dateRange: {fromDate, toDate}
    }
});

$("#myField").addClass("myDateFieldRangeValidate");

$("#btnValidate").click(function(){
  $("#frm1").validate();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/additional-methods.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<form id="frm1">
  Date <input type="text" id="myField">
  <input type="button" id="btnValidate" value="Validate">
</form>

最佳答案

感谢 Arun P Johny,我在这里发布了他的 fiddle :

$.validator.addMethod("dateRange", function(value, element, params) {
  try {
    var date = new Date(value);
    if (date >= params.from && date <= params.to) {
      return true;
    }
  } catch (e) {}
  return false;
}, 'message');

var fromDate = new Date("2017-02-01");
var toDate = new Date("2017-12-31");

$.validator.addClassRules({
  myDateFieldRangeValidate: {
    dateRange: {
      from: fromDate,
      to: toDate
    }
  }
});

$("#myField").addClass("myDateFieldRangeValidate");
$("#frm1").validate();
$("#btnValidate").click(function() {
  console.log($("#frm1").valid())
});

jQuery(function($) {
  var validator = $('#myform').validate({
    rules: {},
    messages: {}
  });
});
<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-validate/1.16.0/jquery.validate.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/additional-methods.min.js"></script>
<form id="frm1">
  Date
  <input type="text" id="myField" value="16 Feb 2017">
  <input type="button" id="btnValidate" value="Validate">
</form>

关于javascript - JQuery 验证日期范围内的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43276378/

相关文章:

javascript - 从外部源导入和语法高亮代码

javascript - 自动对象到数组的转换

javascript - 如何让 HTML5 页面在全屏时发生变化

Javascript onbeforeunload Jquery 事件错误

jquery - 使用 Bootstrap 4 Cards 的网格/列表切换 View

javascript - 选择值后的下拉列表创建新字段

javascript - .filter() 中的函数无法正常工作

jquery - 使用jquery验证的远程功能

选择合法文件后,文件项上的 jQuery 验证插件消息未清除?

jquery - 当 jQuery 验证远程失败时打开模态