Bootstrap日期/日歷插件Datepicker 時間加標記


由於工作需要,項目中使用了Bootstrap日期/日歷插件Datepicker,根據需求需要在其中添加日期標記,實現效果圖如下:

 

特此記錄此次解決方案:

      1.首先分析了功能的DOM元素(如下圖),可以看到橢圓形標記的,說明此日期控件分為三個層,第一個是顯示日,

   第二個顯示的是月份,第三個顯示的是年份

          

2.我的做法是將日期顯示的地方放置一個addr屬性作為當前選擇年月的標記,不論是日點擊事件,前后月份切換,還是月份或年份點擊事件,

都需要改變此屬性的值。

3.然后修改月份前后切換事件,修改日期點擊事件(此事件包括選擇月份),修改前后月份切換事件,下面列舉的是日期點擊事件。

$('#zhixingdate').datepicker().on('changeDate', function(ev){  //日期改變事件
        var dmonth=ev.date                   //當前選中日期
        getOrderlyPowerDays(dmonth);              //日期點擊事件執行時進行其他操作(加標記)
});

4.加標記,也就是上面的getOrderlyPowerDays()方法,此方法中,將獲取所有的顯示日的td標簽+addr屬性的年月拼接起來和方法中查詢到

的日期做比較,如果是相同日期,則添加標志(添加remark樣式)

 1 function showRemark(days){
 2     var datepicker=$('#zhixingdate').parent();
 3     var Mdateswitch=datepicker.find(".datepicker .datepicker-days .table-condensed thead .switch");    //日日歷里的當前月份元素
 4     var UIDays=datepicker.find(".datepicker .datepicker-days .table-condensed tbody tr td.day");    //顯示日層中所有的td元素
 5     UIDays.removeClass("remark");            //移除所有的標志
 6     var dmonths=Mdateswitch.attr("addr");    //獲取當前顯示日層中addr屬性的值
 7 
 8     //循環td顯示日元素,將顯示日的值+addr屬性的值,和傳遞過來的dasys數組結果集做比較,如果相等則加上標記樣式remark
 9     for(var i=0; i< days.length;i++){
10         var v = days[i];
11         UIDays.each(function(){                
12             var t=$(this).html();
13             if(v == (dmonths+(parseInt(t,10)<10?("0"+parseInt(t,10)):parseInt(t,10)))){
14                  if(!$(this).hasClass("remark") && !$(this).hasClass("new") && !$(this).hasClass("old")){
15                      $(this).addClass("remark");
16                  }
17             }
18         });
19      }
20  }
1 .remark {
2     background: url("../img/remark.png") no-repeat scroll 0 0 transparent;
3 }

又遇到相同問題的童鞋可以聯系我,相互討論!^_^

 


免責聲明!

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



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