用日期插件時,常常會有一種需求。兩個input框選擇。開始時間小於結束時間,結束時間大於開始時間,開始時間和結束時間都不大於當前時間。css
咱們固然能夠用選擇的結果來判斷輸入正確與否。可是更好的辦法是讓咱們的日期選擇插件作出一些限制。git
Bootstrap搭配了很優秀的日期選擇插件。DatePicker和DateTimePicker。github
二者功能很相似。使用方法也是差很少的。DatePicker支持更多的事件和設置。bootstrap
看api知道日期變化的時候會有一個事件changeDate。當選擇的日期變化的時候,會調用咱們給這個事件的回調。可是遺憾的是當咱們直接在輸 入框中輸入或刪除日期的時候貌似並不會觸發到這個事件。因此能夠把input框添加屬性 readonly。只讀狀態,而且給日期控件一個清除按鈕。這樣日期的變化正常狀況下就只有經過日期插件來控制了。api
然而當使用DateTimePicker插件點擊清除按鈕的時候,會報錯 Uncaught TypeError: Cannot read property 'getTime' of null,結果致使changeDate事件也不能正常使用。函數
因此就改用DatePicker插件。 spa
而後當一個輸入框日期變化(包括清除)的時候,changeDate事件觸發,在其回調函數裏修改另外一個輸入框的可選範圍。 .net
另外,DatePicker要使界面顯示中文,也須要加載css。bootstrap-datepicker.zh-CN.min.js。插件
function DatePicker(beginSelector,endSelector){ // 僅選擇日期 $(beginSelector).datepicker( { language: "zh-CN", autoclose: true, startView: 0, format: "yyyy-mm-dd", clearBtn:true, todayBtn:false, endDate:new Date() }).on('changeDate', function(ev){ if(ev.date){ $(endSelector).datepicker('setStartDate', new Date(ev.date.valueOf())) }else{ $(endSelector).datepicker('setStartDate',null); } }) $(endSelector).datepicker( { language: "zh-CN", autoclose: true, startView:0, format: "yyyy-mm-dd", clearBtn:true, todayBtn:false, endDate:new Date() }).on('changeDate', function(ev){ if(ev.date){ $(beginSelector).datepicker('setEndDate', new Date(ev.date.valueOf())) }else{ $(beginSelector).datepicker('setEndDate',new Date()); } }) } DatePicker("#date_begin","#date_end");
Bootstrap DatePicker實現日期選擇 開始日期不大於結束時間,結束時間不小於開始時間,開始日期和結束日期都不大於當前日期。
code
演示地址:http://runningls.com/demos/2016/daily/datepicker/
github:https://github.com/liusaint/JavaScript-record/tree/master/datepicker
轉載註明出處:http://blog.csdn.net/liusaint1992/article/details/52590681