DatePicker JQuery UI 验证到日期 >= 从日期
DatePicker JQuery UI valiadtion to date >= from date
谁能告诉我如何通过 class 名称(即).datepicker
进行验证
这是验证 to date >= from date
的演示
$('.datepicker').datepicker({
changeYear: true,
dateFormat: "dd-mm-yy",
yearRange: '2006:' + (new Date().getFullYear() +1)
}).datepicker("setDate", "0");
您可以使用 momentJS 来验证您的日期是否早于或等于。
一个简单的代码,如:
if(moment(fistDate).isBefore(moment(secondDate)) || moment(firstDate).isSame(moment(secondDate)) {
}
在此示例中,第一个日期代表您的日期时间选择器的值,第二个日期是您想要的任何日期,因为您从未告诉过它是什么。
我同意使用 moment.js
。但是,如果您出于某种原因不想或不能,这里有一个针对您的 fiddle.
的解决方案
http://jsfiddle.net/jonofan/YdeY8/483/
$('.datepicker').on('change', function() {
var fromParts = $('#CheckInDate').val().split('-');
var toParts = $('#CheckOutDate').val().split('-');
//please put attention to the month (parts[0]), Javascript counts months from 0:
// January - 0, February - 1, etc
var fromDate = new Date(fromParts[2],fromParts[0]-1,fromParts[1]);
var toDate = new Date(toParts[2],toParts[0]-1,toParts[1]);
if ( fromDate >= toDate ) {
alert('Check in must be before check out!')
}
})
您必须将日期分成几部分的原因是因为 javascript Date()
对象仅解析特定格式,您不能自定义格式。这就是为什么使用像 moment.js
这样的库很好,因为它可以非常灵活地处理所有事情。
根据经验,如果要更改日期格式,使用字符串拆分来解析日期会出现问题。假设 6 个月后您想将日期从 dd-mm-yy
更改为 dd/mm/yy
;您将不得不去更新您的字符串拆分代码。
谁能告诉我如何通过 class 名称(即).datepicker
进行验证这是验证 to date >= from date
的演示$('.datepicker').datepicker({
changeYear: true,
dateFormat: "dd-mm-yy",
yearRange: '2006:' + (new Date().getFullYear() +1)
}).datepicker("setDate", "0");
您可以使用 momentJS 来验证您的日期是否早于或等于。
一个简单的代码,如:
if(moment(fistDate).isBefore(moment(secondDate)) || moment(firstDate).isSame(moment(secondDate)) {
}
在此示例中,第一个日期代表您的日期时间选择器的值,第二个日期是您想要的任何日期,因为您从未告诉过它是什么。
我同意使用 moment.js
。但是,如果您出于某种原因不想或不能,这里有一个针对您的 fiddle.
http://jsfiddle.net/jonofan/YdeY8/483/
$('.datepicker').on('change', function() {
var fromParts = $('#CheckInDate').val().split('-');
var toParts = $('#CheckOutDate').val().split('-');
//please put attention to the month (parts[0]), Javascript counts months from 0:
// January - 0, February - 1, etc
var fromDate = new Date(fromParts[2],fromParts[0]-1,fromParts[1]);
var toDate = new Date(toParts[2],toParts[0]-1,toParts[1]);
if ( fromDate >= toDate ) {
alert('Check in must be before check out!')
}
})
您必须将日期分成几部分的原因是因为 javascript Date()
对象仅解析特定格式,您不能自定义格式。这就是为什么使用像 moment.js
这样的库很好,因为它可以非常灵活地处理所有事情。
根据经验,如果要更改日期格式,使用字符串拆分来解析日期会出现问题。假设 6 个月后您想将日期从 dd-mm-yy
更改为 dd/mm/yy
;您将不得不去更新您的字符串拆分代码。