jQuery验证(日期范围)

Sha*_*ane 11 jquery jquery-plugins jquery-validate

我使用jQuery验证插件,并想知道是否有办法验证输入到字段中的日期是否是yyyy-mm-dd的日期,日期是2010年11月29日 - 2010年12月15日之间

我是jQuery的新手,所以如果有答案,请尽可能地愚弄答案,这样我就可以通过它.非常感谢任何/所有建议

小智 9

如果你想要一个可重用的函数,你可以扩展Emily和lonesomeday的答案以允许提供一个参数:

$.validator.addMethod('daterange', function(value, element, arg) {
     // Same as above

     var startDate = Date.parse(arg[0]),
         endDate = Date.parse(arg[1]),
         enteredDate = Date.parse(value);       
     // Same as below

 }, $.validator.format("Please specify a date between {0} and {1}."))
Run Code Online (Sandbox Code Playgroud)

有关示例,请参阅jQuery验证范围方法的来源.


lon*_*day 7

我从来没有使用过验证插件,但通过API看看这样的东西可能会起作用:

$.validator.addMethod('daterange', function(value, element) {
    if (this.optional(element)) {
        return true;
    }

    var startDate = Date.parse('2010-11-29'),
        endDate = Date.parse('2010-12-15'),
        enteredDate = Date.parse(value);

    if (isNan(enteredDate)) {
        return false;
    }

    return ((startDate <= enteredDate) && (enteredDate <= endDate));
});
Run Code Online (Sandbox Code Playgroud)

我认为,您需要将daterange类添加到适当的元素中.


Emi*_*ily 6

lonesomeday的答案非常接近,只需进行一些调整.我将结束以下代码:

    if(isNaN(enteredDate)) return false;

    return ((startDate <= enteredDate) && (enteredDate <= endDate));
}, "Please specify a date between 2010-11-29 and 2010-12-15");
Run Code Online (Sandbox Code Playgroud)

这会修复isNaN功能,并向用户提供错误消息,以便他们知道您要查找的内容.