即时通讯使用jQuery验证插件,并想知道是否有一种方法来验证输入字段的日期是否是像yyyy-mm-dd这样的日期,并且日期介于2010年11月29日 - 2010年12月15日jQuery验证(日期范围)
我对jQuery非常新,所以如果有答案,请尽量愚蠢的答案,所以我可以通过它。非常感谢任何/所有建议
即时通讯使用jQuery验证插件,并想知道是否有一种方法来验证输入字段的日期是否是像yyyy-mm-dd这样的日期,并且日期介于2010年11月29日 - 2010年12月15日jQuery验证(日期范围)
我对jQuery非常新,所以如果有答案,请尽量愚蠢的答案,所以我可以通过它。非常感谢任何/所有建议
我从来没有使用验证插件,但一看通过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");
此修复isNaN功能,并让他们知道你在找什么还提供一个错误信息给用户:我会如下结束代码。
如果你想有一个可重复使用的功能,您可以延长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}."))
在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']});
沉住气,伙计们! :)
不要忘记,Date.parse无法在不同的语言环境下正常工作,它只能正确解析特定的日期格式。
如果您使用各种日期格式(文化特定) - 最好坚持jQuery日期选择器日期处理。所以,假设你已经加载了正确的文化特定的jquery datepicker对象(例如,jquery.ui.datepicker-nb-NO.js,其中日期格式是DD.MM.yyyy并且不被Date解析。解析),并初始化它,正确的做法是:
$.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;
}
});
我已经把try块内parseDate的东西,因为有要弄清楚,如果日期已被正确解析不正常的方式。