Steven

          You're?still?young --that's?your?fault

           

          【轉】幾個前端時間插件總結

          幾個前端時間插件總結

          總結一下幾款時間插件,分別是 
          - [ ] jeDate 下載地址 
          - [ ] bootstrap-datetimepicker 下載地址 
          - [ ] My97DatePicker 下載地址 
          - [ ] jQuery UI 插件Datepicker 下載地址

          并沒有哪款完全超越另外一款,主要還是看是否合適吧。 
          首先說一下現在項目就在用的 jeDate吧。

          jeDate

          這里寫圖片描述 
          這里寫圖片描述 
          eDate除了包含日期范圍限制、開始日期設定、自定義日期格式、時間戳轉換、當天的前后若干天返回、時分秒選擇、智能響應、自動糾錯、節日識別,操作等常規功能外,還擁有更多趨近完美的解決方案。 
          目前只適合PC端。 
          因為是最近新出的,功能比較完善,支持風格切換,顯示節假日,還有很多強大的功能。 
          Alt textAlt text 
          如上圖所看到的,jeDate 的界面這個樣子,值得一提的是,一般時間的input 輸入框 是設置為只讀的。所以需要其時間插件內部提供清空 調用功能。而下面要說的 bootstrap-datetimepicker 就沒有提供這個功能,需要自己修改實現。 
          同其他插件不同的地方在于,下方有時分秒的選項。點擊進入相應的設置界面。需要注意的是 js 中調用方法設置前面后面時間相互制約的限制 
          代碼如下

          var startDate = jeDate({     dateCell:"#start-date",     format:"YYYY-MM-DD hh:mm:ss",     isTime:true,     isinitVal:true,     minDate:jeDate.now(0),     choosefun:function(val) {         endDate.config.minDate = val;         requireDate.config.minDate = val;         $("#start-date").blur();     },     okfun:function(val) {         endDate.config.minDate = val;         requireDate.config.minDate = val;         $("#start-date").blur();     } }); var endDate = jeDate({     dateCell:"#end-date",     format:"YYYY-MM-DD hh:mm:ss",     isTime:true,     minDate:jeDate.now(0),     choosefun:function(val) {         startDate.config.maxDate = val;         $("#end-date").blur();     },     okfun:function(val) {         startDate.config.maxDate = val;         $("#end-date").blur();     } });  var requireDate = jeDate({     dateCell:"#require-date",     format:"YYYY-MM-DD",     isTime:false,     minDate:jeDate.now(0) }); 

          具體參考相關的API

          bootstrap-datetimepicker

          這里寫圖片描述 
          設置前后時間互相制約的方法

          // 初始化第三方插件 ArticleManager.prototype.initVendorComponent = function() {     // 初始化時間插件     // 設置只能選今天以前的時間     $('#createBeginDate').datetimepicker(datetimePickerOptions).on('show',function(e) {             $('#createBeginDate').datetimepicker('setEndDate',new Date());});     $('#createBeginDate').datetimepicker(datetimePickerOptions).on('changeDate',function(e) {             $('#createBeginDate').datetimepicker('setEndDate',new Date());             $('#createEndDate').datetimepicker('setStartDate',$(this).val());});     // 設置只能選今天以前的時間     $('#createEndDate').datetimepicker(datetimePickerOptions).on('show',function(e) {                 $('#createEndDate').datetimepicker('setEndDate', new Date());             });     $('#createEndDate').datetimepicker(datetimePickerOptions).on('changeDate',function(e) {                 $('#createEndDate').datetimepicker('setEndDate', new Date());                 $('#createBeginDate').datetimepicker('setStartDate',$(this).val());}); }; 

          Alt text

          和上面圖中所看到的,一個主要的缺陷就是沒有原生的清除所選擇日期按鈕。 
          我們項目原來用的就是這個插件,后來手動在原生js里面加入了清除按鈕。 
          但去除這一點,這個插件也是沒什么問題的。風格是原生的bootstrap 風格,如果需要修改,需要自己個性化定制。 
          但其實也給出了沒有清除按鈕的解決辦法,forceParse 方法,設置為true 會強制更改用戶輸入的值,轉變為符合規定的近似的值,也就是說這樣的話不必把輸入框設置成只讀的了。 
          點到為止,其他歡迎去看官方API。這個插件總體上來說也是沒什么問題的。

          jquery UI 插件Datepicker

          這里寫圖片描述

          目前就我所知,jquery UI 并不是很火的樣子,現在前端這些框架更新迭代都很快,以前一些老項目確實有很多直接基于這種框架去做的,組件規范化。使得我們這些后端人員也能做出像模像樣的前端頁面,但是到現在的互聯網確實不夠用了。這就需要專業的前端人員和設計人員了,畢竟如果只是單獨給企業做項目,更加注重功能的實現,而現在的項目更加注重體驗。

            //等待dom元素加載完畢.       $(function(){           $("#selectDate").datepicker({//添加日期選擇功能           numberOfMonths:1,//顯示幾個月           showButtonPanel:true,//是否顯示按鈕面板           dateFormat: 'yy-mm-dd',//日期格式           clearText:"清除",//清除日期的按鈕名稱           closeText:"關閉",//關閉選擇框的按鈕名稱           yearSuffix: '年', //年的后綴           showMonthAfterYear:true,//是否把月放在年的后面           defaultDate:'2011-03-10',//默認日期           minDate:'2011-03-05',//最小日期           maxDate:'2011-03-20',//最大日期           monthNames: ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'],           dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],           dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],           dayNamesMin: ['日','一','二','三','四','五','六'],           onSelect: function(selectedDate) {//選擇日期后執行的操作               alert(selectedDate);           }           });       });   

          如上圖所示,原生的也是沒有日期的清除和時間的限制(這個不確定了)

          現在不是經常使用的插件,但如果需要還是沒有問題的,可能需要個性化定制一些。

          My97DatePicker

          這里寫圖片描述 
          Alt text

          時間比較久遠的一款插件,功能還算豐富,支持日期輸入查詢。 
          這里我就不再多說。

          起始日期功能 

          注意:日期格式必須與 realDateFmt 和 realTimeFmt 一致而不是與 dateFmt 一致

          有時在項目中需要選擇生日之類的日期,而默認點開始日期都是當前日期,導致年份選擇非常麻煩,你可以通過起始日期功能加上配置alwaysUseStartDate屬性輕松解決此類問題

          日期的范圍限制也算比價靈活

          靜態限制 
          注意:日期格式必須與 realDateFmt 和 realTimeFmt 一致而不是與 dateFmt 一致

          你可以給通過配置minDate(最小日期),maxDate(最大日期)為靜態日期值,來限定日期的范圍

          <input type="text" class="Wdate" id="d414" onfocus="WdatePicker({dateFmt:'H:mm:ss',minDate:'8:00:00',maxDate:'11:30:00'})"/>
          • 1
          • 1

          動態限制

          你可以通過系統給出的動態變量,如%y(當前年),%M(當前月)等來限度日期范圍,你還可以通過{}進行表達式運算,如:{%d+1}:表示明天 
          動態變量表 
          格式 說明 
          %y 當前年 
          %M 當前月 
          %d 當前日 
          %ld 本月最后一天 
          %H 當前時 
          %m 當前分 
          %s 當前秒 
          {} 運算表達式,如:{%d+1}:表示明天

          F{} {}之間是函數可寫自定義JS代碼

          示例4-2-1 只能選擇今天以前的日期(包括今天)

          <input id="d421" class="Wdate" type="text" onfocus="WdatePicker({skin:'whyGreen',maxDate:'%y-%M-%d'})"/>
          • 1
          • 1

          示例4-2-2 使用了運算表達式 只能選擇今天以后的日期(不包括今天)

          <input id="d422" class="Wdate" type="text" onfocus="WdatePicker({minDate:'%y-%M-{%d+1}'})"/>
          • 1
          • 1

          示例4-2-3 只能選擇本月的日期1號至本月最后一天

          <input id="d423" class="Wdate" type="text" onfocus="WdatePicker({minDate:'%y-%M-01',maxDate:'%y-%M-%ld'})"/>
          • 1
          • 1

          示例4-2-4 只能選擇今天7:00:00至明天21:00:00的日期

          <input id="d424" class="Wdate" type="text" onfocus="WdatePicker({dateFmt:'yyyy-M-d H:mm:ss',minDate:'%y-%M-%d 7:00:00',maxDate:'%y-%M-{%d+1} 21:00:00'})"/>
          • 1
          • 1

          示例4-2-5 使用了運算表達式 只能選擇 20小時前 至 30小時后 的日期

          <input id="d425" class="Wdate" type="text" onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:'%y-%M-%d {%H-20}:%m:%s',maxDate:'%y-%M-%d {%H+30}:%m:%s'})"/>
          • 1
          • 1

          暫時這這么多。



          梅花香自苦寒來

          posted on 2017-05-27 14:29 wen.ding 閱讀(236) 評論(0)  編輯  收藏 所屬分類: Best solution

          導航

          統計

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 克什克腾旗| 岗巴县| 汉寿县| 亳州市| 无锡市| 调兵山市| 马公市| 安新县| 巩义市| 叙永县| 当雄县| 石屏县| 黄骅市| 池州市| 天台县| 安达市| 文安县| 呈贡县| 织金县| 昆明市| 电白县| 临海市| 武城县| 娄烦县| 龙里县| 饶河县| 平谷区| 临澧县| 东港市| 丰宁| 漳浦县| 眉山市| 竹北市| 富裕县| 庆云县| 南岸区| 西青区| 朝阳区| 东辽县| 邵武市| 万安县|