2014-04-29 104 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' : '';   
    } 
}); 

希望它可以幫助。