setDateDisabled + start/end 日期中断 bootstrap-datepicker
setDateDisabled + start/end date break bootstrap-datepicker
我正在使用 bootstrap-datepicker from eternicode,我反对奇怪的行为。
当我尝试使用 setDatesDisabled option on the fly with the default startDate and endDate 选项时,日期选择器似乎停止运行并且不允许我再更改月份。
最奇怪的是 alert()
就在调用 setDatesDisabled
之前的一个简单的 setDatesDisabled
似乎更正了错误...
我最后的需求是动态添加一些 disabledDate,使用函数作为数据提供者
简化代码:
// enable the datepicker on fields
$('.date-picker').datepicker({
format: 'yyyy-mm-dd',
startDate: '2016-04-01',
endDate: '2016-08-15',
datesDisabled: ['2016-04-21','2016-04-20','2016-04-13']
})
.on('show', function(ev){
// @TODO check why bug here...
// alert('hi'); // uncomment to patch bug
$(this).datepicker('setDatesDisabled', ['2016-04-17','2016-04-16']);
});
选中 the JSFiddle 进行重现。
有没有人遇到同样的事情/有解决方法来临时禁用某个日期?
我已经在 eternicode Github 上制作了 a bug report,我认为这可能是一个内部错误。
这很可能是因为日期选择器 'show'
事件在您导航时多次触发,而日期选择器日历处于打开状态。
在 callendar 已经打开时设置禁用日期会导致它被重新计算和重新加载,因此它导航回到当前所选日期的月份 - 这使得无法离开所选日期的页面(没有选定日期时会发生半工作情况。
不确定这是否适用于您的情况,但如果您仅在日历未打开时设置禁用日期,这应该有效。
我改了
.on('show', function(ev){
到
$('.date-picker').on('click', function(ev){
这似乎工作正常,请参阅更新后的 fiddle:
https://jsfiddle.net/zj9sjspf/11/
第二个"hackish"解决方案是你可以禁用自动showOnFocus
,并手动检查日历是否未打开+设置新的禁用日期+手动触发show
领域正在被关注。这不是执行此操作的最佳方法,但可能是您等待对错误报告的回复时的方法;)
可以在此处查看执行此操作的一种方法:
https://jsfiddle.net/zj9sjspf/13/
我正在使用 bootstrap-datepicker from eternicode,我反对奇怪的行为。
当我尝试使用 setDatesDisabled option on the fly with the default startDate and endDate 选项时,日期选择器似乎停止运行并且不允许我再更改月份。
最奇怪的是 alert()
就在调用 setDatesDisabled
之前的一个简单的 setDatesDisabled
似乎更正了错误...
我最后的需求是动态添加一些 disabledDate,使用函数作为数据提供者
简化代码:
// enable the datepicker on fields
$('.date-picker').datepicker({
format: 'yyyy-mm-dd',
startDate: '2016-04-01',
endDate: '2016-08-15',
datesDisabled: ['2016-04-21','2016-04-20','2016-04-13']
})
.on('show', function(ev){
// @TODO check why bug here...
// alert('hi'); // uncomment to patch bug
$(this).datepicker('setDatesDisabled', ['2016-04-17','2016-04-16']);
});
选中 the JSFiddle 进行重现。
有没有人遇到同样的事情/有解决方法来临时禁用某个日期?
我已经在 eternicode Github 上制作了 a bug report,我认为这可能是一个内部错误。
这很可能是因为日期选择器 'show'
事件在您导航时多次触发,而日期选择器日历处于打开状态。
在 callendar 已经打开时设置禁用日期会导致它被重新计算和重新加载,因此它导航回到当前所选日期的月份 - 这使得无法离开所选日期的页面(没有选定日期时会发生半工作情况。
不确定这是否适用于您的情况,但如果您仅在日历未打开时设置禁用日期,这应该有效。
我改了
.on('show', function(ev){
到
$('.date-picker').on('click', function(ev){
这似乎工作正常,请参阅更新后的 fiddle:
https://jsfiddle.net/zj9sjspf/11/
第二个"hackish"解决方案是你可以禁用自动showOnFocus
,并手动检查日历是否未打开+设置新的禁用日期+手动触发show
领域正在被关注。这不是执行此操作的最佳方法,但可能是您等待对错误报告的回复时的方法;)
可以在此处查看执行此操作的一种方法: https://jsfiddle.net/zj9sjspf/13/