2017-04-04 89 views
1

使用Bootstrap Datepicker,我試圖讓用戶只選擇第一第三每個月的星期三。僅啓用第一和第三個星期三每個月在引導日期選擇器

現在,我設法做的唯一事情是通過將它傳遞給選項來啓用僅星期三。 有誰知道我是否可以通過我的「第一和第三」想要的配置作爲選項,以及如何?

<script type="text/javascript"> 
    $(function() { 
     $('.bootstrap-date-picker').datetimepicker({ 
      locale: 'fr', 
      daysOfWeekDisabled: [0,1,2,4,5,6], 
      format: "ll", 
      minDate: moment(), 
      icons: 
     }); 
    }); 
</script> 

回答

1

您可以使用enabledDates選項啓用單日期,而不是daysOfWeekDisabled

您可以創建一個輔助函數,該函數使用momentjs返回給定月份的第一個和第三個星期三的數組。一個例子可以發現here

當用戶更改月份時,您可以爲dp.update添加列表程序以更新啓用的日期(使用enabledDates函數)。

這裏一個完整的工作示例:

function getFirstAndThirdWed(year, month){ 
 
    // Convert date to moment (month 0-11) 
 
    var myMonth = moment({year: year, month: month}); 
 
    // Get first Wednesday of the first week of the month 
 
    var firstWednesday = myMonth.weekday(2); 
 
    // Check if first Wednesday is in the given month 
 
    if(firstWednesday.month() != month){ 
 
     firstWednesday.add(1, 'weeks'); 
 
    } 
 
    // Get 3rd Wednesday of the month 
 
    var third = firstWednesday.clone().add(2, 'weeks'); 
 
    return [firstWednesday, third]; 
 
} 
 

 
$('.bootstrap-date-picker').datetimepicker({ 
 
    locale: 'fr', 
 
    useCurrent: false, 
 
    enabledDates: getFirstAndThirdWed(moment().year(), moment().month()), 
 
    format: "ll", 
 
    minDate: moment().startOf('day'), 
 
}).on("dp.update", function (e) { 
 
    if(e.viewDate){ 
 
    var enabledDates = getFirstAndThirdWed(e.viewDate.year(), e.viewDate.month()); 
 
    $('.bootstrap-date-picker').data("DateTimePicker").enabledDates(enabledDates); 
 
    } 
 
});
<link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet"/> 
 
<link href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.css" rel="stylesheet"/> 
 

 
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/locale/fr.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script> 
 

 
<div class="form-group"> 
 
    <div class='input-group date bootstrap-date-picker'> 
 
     <input type='text' class="form-control"/> 
 
     <span class="input-group-addon"> 
 
     <span class="glyphicon glyphicon-calendar"></span> 
 
     </span> 
 
    </div> 
 
</div>


新增startOf('day')minDate選項,以防止問題,噹噹前日期是本月的第一個星期三和大家儘量選擇它。

+0

非常感謝,它就像一個魅力! –

+0

@ArthurKoenig很樂意幫忙。我編輯了我的答案,以確保當前日期是本月的第一個星期三時沒有問題。不要忘記將asnwer標記爲已接受(閱讀[這裏](http://stackoverflow.com/help/someone-answers)和[這裏](https://meta.stackexchange.com/a/5235)if你需要幫助)如果答案解決了你的問題。 – VincenzoC

相關問題