Ограничить загрузку-datepicker только в рабочие дни?
Есть ли способ разрешить только выбор в будние дни в подборке даты бутстрапа, найденном ниже?
https://github.com/eternicode/bootstrap-datepicker/
Я создаю выбор даты следующим образом:
$('#datepicker').datepicker();
/* Update datepicker plugin so that MM/DD/YYYY format is used. */
$.extend($.fn.datepicker.defaults, {
parse: function (string) {
var matches;
if ((matches = string.match(/^(\d{2,2})\/(\d{2,2})\/(\d{4,4})$/))) {
return new Date(matches[3], matches[1] - 1, matches[2]);
} else {
return null;
}
},
format: function (date) {
var
month = (date.getMonth() + 1).toString(),
dom = date.getDate().toString();
if (month.length === 1) {
month = "0" + month;
}
if (dom.length === 1) {
dom = "0" + dom;
}
return month + "/" + dom + "/" + date.getFullYear();
}
});
Спасибо за любую помощь.
Ответы
Ответ 1
В последней версии https://github.com/eternicode/bootstrap-datepicker уже есть возможность отключить выбор определенных рабочих дней. Из документы:
daysOfWeekDisabled
Строка, массив. По умолчанию: ', []
Дни недели, которые должны быть отключены. Значения: 0 (воскресенье) до 6 (суббота). Несколько значений должны быть разделены запятыми. Пример: отключить выходные: '0,6'
или [0,6]
.
Другими словами, просто создайте экземпляр своего датпикера следующим образом:
$('#datepicker').datepicker({
daysOfWeekDisabled: [0,6]
});
Здесь jsfiddle демонстрирует это: http://jsfiddle.net/vj77M/1/
Ответ 2
** ОБНОВЛЕНИЕ **
У Bootprap datepicker теперь есть опция daysOfWeekDisabled
. См. Ниже @fin.
** OLD ANSWER **
Вот рабочая демонстрация
Предполагая, что ваши недели начнутся в воскресенье:
$(function() {
function disableWeekends($this) {
var $days = $this.find('.datepicker-days tr').each(function() {
var $days = $(this).find('.day');
$days.eq(0).addClass('old').click(false); //Sunday
$days.eq(6).addClass('old').click(false); //Saturday
});
}
$('#dp1').datepicker({
format: 'mm-dd-yyyy'
});
// get instance of the jQuery object created by
// datepicker
var datepicker = $('#dp1').data('datepicker').picker;
// disable weekends in the pre-rendered version
disableWeekends(datepicker);
// disable weekends whenever the month changes
var _fill = datepicker.fill;
datepicker.fill = function() {
_fill.call(this);
disableWeekends(this.picker);
};
});
Если нет, просто измените $days.eq(...) на правильные индексы.
Конечно, это распространяется только на событие click и направляет вас в правильном направлении. Я вполне уверен, что вам придется решать другие вопросы, такие как клавиатура.
ИЗМЕНИТЬ
Для последней версии используйте этот код, где разрешено
// get instance of the jQuery object created by datepicker
var datepicker = $('#dp1').data('datepicker');
// disable weekends in the pre-rendered version
disableWeekends(datepicker.picker);
// disable weekends whenever the month changes
var _fill = datepicker.fill;
datepicker.fill = function() {{
_fill.call(this);
disableWeekends(datepicker.picker);
}};
Ответ 3
$(document).ready(function(){
var date_input=$('input[name="date"]');
var container=$('.bootstrap-iso form').length>0 ? $('.bootstrap-iso form').parent() : "body";
date_input.datepicker({
format: 'dd/mm/yyyy',
container: container,
weekStart: 0,
daysOfWeekDisabled: "0,1,2,3,4,5",
daysOfWeekHighlighted: "6",
todayHighlight: true,
autoclose: true,
})
})