2014-04-29 106 views
2

我正在使用bootstrap datepicker。我有两个日期选择器:一个用于开始日期,另一个用于结束日期。结束日期应始终在开始日期之后或之后,因此为了便于用户使用,我希望在结束日期日期选择器中禁用比开始日期早的日期。Force Bootstrap datepicker重新渲染

根据相关文档,我做这样的事情:

$endDate.datepicker({ 
    onRender: function(date) { 
    return date.valueOf() < startDate.valueOf() ? 'disabled' : '';   
    },                  
}); 

这工作,但问题是,onRender不叫每次打开日期选择器时间或开始日期的变化(这是我需要)。有什么办法强制datepicker重新渲染,当开始日期改变时我可以做什么,或者每次打开结束日期datepicker时触发的事件,我可以控制某些日期是否被禁用?

+0

您是否尝试使用“changeDate”事件? – Seb33300

+0

@ Seb33300是否有触发'changeDate'渲染的方法? –

回答

1

今天我一直在努力解决同样的问题。我通过更改我的开始日期的更改事件的enddate值来修复它。

.on('changeDate', function(ev) { 
     var newDate = new Date(ev.date) 
     newDate.setDate(newDate.getDate() +1); 
     endDate.setValue(newDate); 

这会强制结束日期在更改startDate时重新呈现。

+0

如果结束日期已被选择(并且有效),那么怎么办? –

+0

您可以添加一个条件。 'if(endDate.valueOf()

0

我认为你可以使用fill()方法:

startdate = $(startdate).datepicker().on('changeDate', function() { 
    enddate.fill(); // it's will trigger enddate onRender function 
}); 
enddate = $(startdate).datepicker({ 
    onRender: function(date) { 
     return date.valueOf() < startDate.valueOf() ? 'disabled' : '';   
    } 
}); 

希望它可以帮助。