简体   繁体   English

在Bootstrap-datepicker中使用“beforeShowDay”

[英]Use “beforeShowDay” with Bootstrap-datepicker

I use Bootstrap 3. 我使用Bootstrap 3。

Into a Bootstrap-datepicker, I have to enable dates only when there is some news get from my CMS TYPO3 v7 for this dates. 进入Bootstrap-datepicker,我必须在这个日期从我的CMS TYPO3 v7获得一些新闻时启用日期。

I success to get the dates into a data attribute from a TYPO3 viewhelper : 我成功将日期转换为TYPO3 viewhelper的数据属性:

<input id="agenda-date-selector-datepicker-footer" class="agenda-date-selector-datepicker" value="{f:format.date(date:\'{weekDate}\',format:\'d-m-Y\')}" data-dates='{enableDates -> ul:Datepicker()}'>

(Don't take care of "values" it's not important here). (不要照顾“价值”,这在这里并不重要)。

Into my JS I enter into my "true" return. 进入我的JS我进入我的“真实”回归。 (alert("true"); is display 10 time but I have 13 dates... strange... And no dates are disabled into datepicker. (alert("true");显示10次,但我有13个日期...奇怪...并且没有日期被禁用到datepicker。

I adapt this working model to make the code http://jsfiddle.net/vCJ2u/198/ but this model use jQuery UI. 我调整这个工作模型来制作代码http://jsfiddle.net/vCJ2u/198/,但这个模型使用jQuery UI。

Here my code : 这是我的代码:

 $(function(){ if($('.section-agenda-date-selector').length){ availableDates = $('#agenda-date-selector-datepicker-footer').data('dates'); alert(availableDates); $("#agenda-date-selector-datepicker-footer").datepicker({ maxViewMode: 2, language: "fr", autoclose: true, todayHighlight: true, //startDate: '+1d', //weekStart: 1, format: 'yyyy-mm-dd', beforeShowDay: function(dt){ console.log([available(dt), "" ]); return [available(dt), "" ]; } }); initAgendaListe(); } }); function available(date) { dmy = ( '0' + date.getDate() ).slice( -2 ) + "-" + ( '0' + (date.getMonth()+1) ).slice( -2 ) + "-" + date.getFullYear(); if ($.inArray(dmy.toString(), availableDates) != -1){ // alert("true"); return { enabled : true }; } else { return { enabled : false }; } } function initAgendaListe(){ // au click sur un élément du datepicker $('.agenda-date-selector-datepicker').on('change', function(){ window.location.href = '/index.php?id=19&eventsbyweek='+$(this).val(); }); }; 
 <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.1/js/bootstrap-datepicker.min.js"></script> <div class="section section-grey section-agenda-date-selector"> ... </div> <div class="agenda-datepicker datepicker-wrapper"> <div class="input-datepicker-hidden"> <input id="agenda-date-selector-datepicker-footer" class="agenda-date-selector-datepicker" value="" data-dates='["15-06-2017","20-06-2017","29-06-2017","29-08-2017","11-09-2017","15-09-2017","17-09-2017","18-09-2017","27-09-2017","28-09-2017","29-09-2017","30-09-2017","31-10-2017"]'> </div> <label class="btn btn-default" for="agenda-date-selector-datepicker-footer"> <i class="icon icon-left icon-agenda"></i> Choisir une date </label> </div> 

An idea please ? 请问一个想法? Any help is welcome ! 欢迎任何帮助! :) Thanks in advance ! :) 提前致谢 !

Hope this helps! 希望这可以帮助!

use bootstrap beforeShowDay option to enable dates. 使用bootstrap beforeShowDay选项启用日期。

 $(function() { var datesEnabled = ['2017-9-10', '2017-9-15', '2017-9-25']; $('#datepicker').datepicker({ format: 'yyyy-mm-dd', beforeShowDay: function (date) { var allDates = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate(); if(datesEnabled.indexOf(allDates) != -1) return true; else return false; } }); }); 
 td.day.disabled { opacity: 0.2; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.0/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.7.1/js/bootstrap-datepicker.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/> <input id="datepicker"> 

ok ! 好 ! Now it's working ! 现在它正在运作! Here my code : https://jsfiddle.net/scanx/per1syfr/2/ 在这里我的代码: https//jsfiddle.net/scanx/per1syfr/2/

 $(function(){ if($('.section-agenda-date-selector').length){ // var datesEnabled = $('#agenda-date-selector-datepicker-footer').data('dates'); var datesEnabled = ['2017-09-21','2017-09-15','2017-09-25']; alert(datesEnabled); $("#agenda-date-selector-datepicker-footer").datepicker({ maxViewMode: 2, language: "fr", autoclose: true, todayHighlight: true, weekStart: 1, format: 'yyyy-mm-dd', beforeShowDay: function (date) { var allDates = date.getFullYear() + "-" + ( '0' + (date.getMonth()+1) ).slice( -2 ) + "-" + ( '0' + date.getDate() ).slice( -2 ); if(datesEnabled.indexOf(allDates) != -1) { alert(allDates + " : dispo"); return true; } else { alert(allDates + " : pas dispo") return false; } } }); initAgendaListe(); } }); 

Thanks to Amal who help me so much ! 感谢Amal ,他非常帮助我! :) :)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM