【问题标题】:Force bootstrap datepicker rerendering强制引导日期选择器重新渲染
【发布时间】:2014-06-15 12:52:46
【问题描述】:

我正在使用bootstrap datepicker。我有两个日期选择器:一个用于开始日期,一个用于结束日期。结束日期应始终在开始日期或开始日期之后,因此为了用户友好,我想禁用结束日期日期选择器中早于开始日期的日期。

根据文档,我正在做类似的事情:

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

这可行,但问题是onRender 不会在每次打开日期选择器或更改开始日期时都被调用(这是我需要的)。有什么方法可以强制日期选择器重新渲染,我可以在开始日期更改时执行此操作,或者每次结束日期日期选择器打开时触发的事件,我可以控制是否禁用某些日期?

【问题讨论】:

  • 您是否尝试使用“changeDate”事件?
  • @Seb33300 有没有办法从changeDate触发渲染?

标签: javascript jquery twitter-bootstrap date datepicker


【解决方案1】:

我觉得你可以使用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' : '';        
    }
});

希望对你有帮助。

【讨论】:

【解决方案2】:

我今天也遇到了同样的问题。我通过更改开始日期的更改事件的结束日期值来修复它。

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

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

【讨论】:

  • 如果已经选择了结束日期(并且有效)怎么办?
  • 您可以添加条件。 if (endDate.valueOf() &lt; startDate.valueOf()){ //code }
猜你喜欢
  • 2013-06-10
  • 2016-09-24
  • 2023-03-26
  • 2014-07-27
  • 1970-01-01
  • 2012-11-02
  • 2015-02-02
相关资源
最近更新 更多