我正在使用4个datepicker日历,我想要禁用上一个选定日期的日期..我从JQuery日期选择器中得到了一些想法,但它适用于2个日期选择器,但我必须使用4个日期选择器。所以,如果任何人有解决方案只是与我分享.. 对于两个日期选择器,这是代码:
$(function() {
var dates = $( "#txt1, #txt2" ).datepicker({
minDate:0,
maxDate:"+1Y",
defaultDate: "+1w",
dateFormat:'dd-mm-yy',
numberOfMonths: 3,
onSelect: function( selectedDate ) {
var option = this.id == "txt1" ? "minDate" : "maxDate",
instance = $( this ).data( "datepicker" ),
date = $.datepicker.parseDate(
instance.settings.dateFormat ||
$.datepicker._defaults.dateFormat, selectedDate, instance.settings );
dates.not( this ).datepicker( "option", option, date );
}
});
});
答案 0 :(得分:1)
如果您的文字输入有ids
txt1
到txt4
,那么这样的简单操作就可以了:
onSelect: function(date) {
for(var i = 0; i < dates.length; ++i) {
if(dates[i].id < this.id)
$(dates[i]).datepicker('option', 'maxDate', date);
else if(dates[i].id > this.id)
$(dates[i]).datepicker('option', 'minDate', date);
}
}
演示:http://jsfiddle.net/ambiguous/Rtbph/
不需要id
属性进行比较的替代方案就会使用index
:
var dates = $('#first, #second, #third, #fourth').datepicker({
// ...
onSelect: function(date) {
var me = dates.index(this);
for(var i = 0; i < dates.length; ++i) {
if(i < me)
$(dates[i]).datepicker('option', 'maxDate', date);
else if(i > me)
$(dates[i]).datepicker('option', 'minDate', date);
}
}
});
然后你必须确保你的初始选择器$('#first, #second, #third, #fourth')
以正确的从左到右的顺序输入。