bootstrap-datetimepicker 日期控件起始時間和結束時間


項目中經常會用到起止時間,如下圖:

需要引用以下幾個文件:

<link href="~/lib/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="~/lib/bootstrap/dist/css/bootstrap-datetimepicker.min.css" rel="stylesheet" />
<script src="~/lib/bootstrap/dist/js/bootstrap-datetimepicker.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap-datetimepicker.zh-CN.js"></script>

然后,代碼中需要初始化一下:

            $("#sDatePicker").datetimepicker(
                {
                    language: 'zh-CN',
                    autoclose: true,//選中之后自動隱藏日期選擇框
                    clearBtn: false,//清除按鈕
                    todayBtn: true,//今日按鈕
                    format: 'yyyy-mm-dd',
                    startView: 2,
                    minView: 2,
                    todayHighlight: false,
                    forceParse: true,
                    endDate: new Date()
                }).on('changeDate', function (ev) {
                    if (ev.date) {
                        $("#eDatePicker").datetimepicker('setStartDate', new Date(ev.date.valueOf()))
                    } else {
                        $("#eDatePicker").datetimepicker('setStartDate', null);
                    }
                });

            $("#eDatePicker").datetimepicker(
                {
                    language: 'zh-CN',
                    autoclose: true,//選中之后自動隱藏日期選擇框
                    clearBtn: false,//清除按鈕
                    todayBtn: true,//今日按鈕
                    format: 'yyyy-mm-dd',
                    startView: 2,
                    minView: 2,
                    todayHighlight: false,
                    forceParse: true
                }).on('changeDate', function (ev) {
                    if (ev.date) {
                        $("#sDatePicker").datetimepicker('setEndDate', new Date(ev.date.valueOf()))
                    } else {
                        $("#sDatePicker").datetimepicker('setEndDate', new Date());
                    }

                });
初始化代碼-js

搞定,而且也限制了起始時間不大於今天,且不大於結束時間。結束時間不小於起始時間。

然而,在將選擇的日期刪除之后,總是回不到初始狀態 ,比如,結束時間選擇 3月5號,那么開始時間只能選3月5號以前,當刪除了結束時間(或者點擊清空/重置 按鈕清除已選時間),發現,開始時間依然是只能選擇3月5號之前的。解決 方法如下:
修改源碼bootstrap-datetimepicker.js,如下片段:

    setStartDate: function (startDate) {
      //this.startDate = startDate || this.startDate;
      //傳入空或null時,恢復默認(為解決清空日期后,時間限制恢復不到默認值,例如開始時間仍被限制小於上一次的結束時間)
      this.startDate = startDate || new Date(-8639968443048000);
      if (this.startDate.valueOf() !== 8639968443048000) {
        this.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language, this.formatType, this.timezone);
      }
      this.update();
      this.updateNavArrows();
    },

    setEndDate: function (endDate) {
      //this.endDate = endDate || this.endDate;
      //傳入空或null時,恢復默認(為解決清空日期后,時間限制恢復不到默認值,例如開始時間仍被限制小於上一次的結束時間)
      this.endDate = endDate || new Date(8639968443048000);
      if (this.endDate.valueOf() !== 8639968443048000) {
        this.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language, this.formatType, this.timezone);
      }
      this.update();
      this.updateNavArrows();
    },
源碼修改

然后 ,在清空/重置 事件中,增加以下代碼:

            $("#sDatePicker").datetimepicker('setEndDate', new Date());
            $("#eDatePicker").datetimepicker('setStartDate', null);

ok,搞定了;

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM