我正在使用eyecon的Bootstrap Datepicker插件,在这里找到 - http://www.eyecon.ro/bootstrap-datepicker/
我正在尝试使用onRender
事件来禁用许多日期。我需要禁用Checkin和Checkout的今天(未来日期)之后的所有日期。 Checkout还需要与Checkin禁用时相同或之前的任何日期。尽管Checkout根本不起作用,但Checkin的效果非常好。
很明确问题是我没有正确返回值,因为我的逻辑看起来很好。
这是我的尝试,使用Datepicker网站上示例中的代码:
HTML:
Check in: <input type="text" class="span2" value="" id="dpd1"></input>
Check out: <input type="text" class="span2" value="" id="dpd2"></input>
JS:
var nowTemp = new Date();
var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
var checkin = $('#dpd1').datepicker({
onRender: function (date) {
return date.valueOf() < now.valueOf() ? 'disabled' : '';
}
}).on('changeDate', function (ev) {
if (ev.date.valueOf() > checkout.date.valueOf()) {
var newDate = new Date(ev.date)
newDate.setDate(newDate.getDate() + 1);
checkout.setValue(newDate);
}
checkin.hide();
$('#dpd2')[0].focus();
}).data('datepicker');
var checkout = $('#dpd2').datepicker({
onRender: function (date) {
return (date.valueOf() > now.valueOf()) && (date.valueOf() <= checkin.date.valueOf()) ? 'disabled' : '';
}
}).on('changeDate', function (ev) {
checkout.hide();
}).data('datepicker');
答案 0 :(得分:3)
您需要检查所选日期是否小于且不大于结帐日期。
if (ev.date.valueOf() < checkout.date.valueOf()) {
用于结帐的onRender方法,您正在检查日期是否在今天之前和签入日期之前,这是永远不会成立的。您应该检查签入日期和今天之间的情况。希望这是你想要的。
onRender: function (date) {
return (date.valueOf() < now.valueOf()) && (date.valueOf()>= checkin.date.valueOf()) ? '' : 'disabled';
}
演示fiddle