JS Bootstrap-DateRangePicker 如何設置默認值爲空

DateRangePicker是一款時間範圍選擇器,界面良好,很是適合短期範圍選擇的插件,具體源碼能夠在http://www.daterangepicker.com/找到app

,可是目前使用中,感受功能不甚齊全,因此將遇到的問題和解決方法記錄下來。函數

1沒法默認值爲空this

DateRangePicker能夠經過在初始化時設置startDate和endDate屬性,來實現設置初始默認值。其中能夠引用moment這一款專門針對date的時間管理插件,例如使用options.startDate=moment() 設置初始默認值爲當前時間spa

可是當想設置初始默認值爲空時,即便設置startDate和endDate爲 ' '也不行,會提示日期格式不對,沒法實現。插件

因此,在此咱們可使用autoUpdateInput屬性,autoUpdateInput是用來打開和關閉daterangepicker選擇時,是否自動傳值到input[text] 這個DOM的屬性,經過設置初始autoUpdateInput爲false,能夠實現初始值爲空,這是在input中設置的placeholder才能正常顯現出來。事件

可是設置該屬性以後,無論怎麼選擇daterangePikcer的日期,都不會有傳值到input中,也就是沒有辦法正常顯示選擇的日期了,因此要在恰當的時刻,調用$(id).data('daterangepicker').autoUpdateInput=true,就能夠了。ci

做者最初設置爲,最初默認值爲空,當daterangepicker 的input發生點擊時,autoUpadateInput=true,可是這時出現input無論是否選中日期,都會自動有值,因此爲了修改這個問題,我在daterangepicker的源碼中進行了修改,固然也能夠從新更改須要的onclick事件。input

在源碼中,當autoUpdateInput設置爲false以後,咱們想要在點擊肯定,選中日期和點擊range三個地方,將autoUpdateInput改變回來,因此,在三處設置了this.autoUpdateInput=true屬性,源碼

io

在1207行左右,clickrange函數中,當點擊選擇了range時,改變autoUpdateInput屬性,在else中加入,是由於當選擇自定義標籤時,若是沒有選擇日期,依舊不改變默認值。選擇日期的改變,在後文所示。

 } else if (!this.endDate && date.isBefore(this.startDate)) {
            this.autoUpdateInput=true;
                //special case: clicking the same date for start/end,
                //but the time of the end date is before the start date
                this.setEndDate(this.startDate.clone());
            } else { // picking end
            this.autoUpdateInput=true;
                if (this.timePicker) {

在1335行左右,clickdate函數中,當點擊選擇了enddate也就是完整的選擇了日期時

 } else if (!this.endDate && date.isBefore(this.startDate)) {
            this.autoUpdateInput=true;
                //special case: clicking the same date for start/end,
                //but the time of the end date is before the start date
                this.setEndDate(this.startDate.clone());
            } else { // picking end
            this.autoUpdateInput=true;
                if (this.timePicker) {

在1400行左右,還有一種狀況,就是當有時分秒的時間顯示時,有可能用戶會直接點擊確認,或更改時分秒,來選擇日期,因此在clickapply函數中,也改變autoUpdateInput值

clickApply: function(e) {
        this.autoUpdateInput=true;

相關文章
相關標籤/搜索