jQueryvalidation(日期范围)

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

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

如果你想要一个可重用的函数,你可以扩展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}.")) 

有关示例,请参阅jQueryvalidation范围方法的来源 。

我从来没有使用过validation插件,但通过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)); }); 

我认为,您需要将daterange类添加到相应的元素中。

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

  if(isNaN(enteredDate)) return false; return ((startDate <= enteredDate) && (enteredDate <= endDate)); }, "Please specify a date between 2010-11-29 and 2010-12-15"); 

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

伙计们,抓住你的马! 🙂

不要忘记,Date.parse无法与不同的语言环境一起正常工作,它只能正确解析特定的日期格式。

如果您使用各种日期格式(特定于文化) – 最好坚持使用jquery datepicker日期处理。

因此,假设您已加载了正确的特定于文化的jquery datepicker对象(例如,jquery.ui.datepicker-nb-NO.js,其中日期格式为DD.MM.yyyy且未由Date.parse解析)并初始化它,正确的方法是:

 $.validator.addMethod('dateRange', function (value, element, parameterValue) { if (this.optional(element) && !value) { return true; } var dateFormat = $(element).datepicker('option', 'dateFormat'); try { var startDate = $.datepicker.parseDate(dateFormat, parameterValue[0]).getTime(); var endDate = $.datepicker.parseDate(dateFormat, parameterValue[1]).getTime(); var enteredDate = $.datepicker.parseDate(dateFormat, value).getTime(); return (startDate <= enteredDate) && (enteredDate <= endDate); } catch (error) { return true; } }); 

我把parseDate的东西放在try块里面,因为没有正常的方法来判断日期是否已被正确解析。

在Connor的代码中进行了一些小修正。

生成的工作代码是:

 $.validator.addMethod('daterange', function(value, element, arg) { if (this.optional(element) && !value) { return true; } var startDate = Date.parse(arg[0]), endDate = Date.parse(arg[1]), enteredDate = Date.parse(value); if (isNaN(enteredDate)) { return false; } return ( (isNaN(startDate) || (startDate <= enteredDate)) && (isNaN(endDate) || (enteredDate <= endDate))); }, $.validator.format("Please specify a date between {0} and {1}.")); 

然后像这样使用它:

 $("#some_date_input").rules("add",{daterange:['01/31/2001','01/31/2020']}); 

日期类型input日期范围min / max属性