Eu uso um datepicker para escolher um dia de compromisso. Eu já defini o período como apenas para o próximo mês. Isso funciona bem. Quero excluir sábados e domingos das opções disponíveis. Isso pode ser feito? Se sim, como?
Eu uso um datepicker para escolher um dia de compromisso. Eu já defini o período como apenas para o próximo mês. Isso funciona bem. Quero excluir sábados e domingos das opções disponíveis. Isso pode ser feito? Se sim, como?
Existe a beforeShowDay
opção, que exige que uma função seja chamada para cada data, retornando true se a data for permitida ou false se não for. Dos documentos:
beforeShowDay
A função assume uma data como parâmetro e deve retornar uma matriz com [0] igual a verdadeiro / falso, indicando se essa data é selecionável ou não e 1 igual ao (s) nome (s) da classe CSS ou '' para a apresentação padrão. Ele é chamado para cada dia no datepicker antes de ser exibido.
Exiba alguns feriados nacionais no datepicker.
$(".selector").datepicker({ beforeShowDay: nationalDays})
natDays = [
[1, 26, 'au'], [2, 6, 'nz'], [3, 17, 'ie'],
[4, 27, 'za'], [5, 25, 'ar'], [6, 6, 'se'],
[7, 4, 'us'], [8, 17, 'id'], [9, 7, 'br'],
[10, 1, 'cn'], [11, 22, 'lb'], [12, 12, 'ke']
];
function nationalDays(date) {
for (i = 0; i < natDays.length; i++) {
if (date.getMonth() == natDays[i][0] - 1
&& date.getDate() == natDays[i][1]) {
return [false, natDays[i][2] + '_day'];
}
}
return [true, ''];
}
Existe uma função interna, chamada noWeekends, que impede a seleção de dias de fim de semana.
$(".selector").datepicker({ beforeShowDay: $.datepicker.noWeekends })
Para combinar os dois, você pode fazer algo como (assumindo a nationalDays
função de cima):
$(".selector").datepicker({ beforeShowDay: noWeekendsOrHolidays})
function noWeekendsOrHolidays(date) {
var noWeekend = $.datepicker.noWeekends(date);
if (noWeekend[0]) {
return nationalDays(date);
} else {
return noWeekend;
}
}
Atualização : Observe que, a partir da jQuery UI 1.8.19, a opção beforeShowDay também aceita um terceiro parâmetro opcional, uma dica de ferramenta pop-up
Uncaught TypeError: Cannot read property 'noWeekends' of undefined
os dias nacionais função funciona como esperado emboraSe você não deseja que os fins de semana apareçam, simplesmente:
CSS
fonte
td.ui-datepicker-week-end { visibility: hidden; }
Essas respostas foram muito úteis. Obrigado.
Minha contribuição abaixo adiciona uma matriz em que vários dias podem retornar falsos (estamos fechados toda terça, quarta e quinta-feira). E juntei as datas específicas mais os anos e as funções sem fins de semana.
Se você quiser fins de semana de folga, adicione [Sábado], [Domingo] à matriz closedDays.
fonte
O datepicker possui essa funcionalidade incorporada!
http://api.jqueryui.com/datepicker/#utility-noWeekends
fonte
A solução aqui que todo mundo gosta parece muito intensa ... pessoalmente, acho muito mais fácil fazer algo assim:
Dessa forma, suas datas são legíveis por humanos. Não é tão diferente assim, só faz mais sentido para mim dessa maneira.
fonte
Esta versão do código fará com que você obtenha as datas de feriado do banco de dados sql e desative a data especificada no UI Datepicker
Crie um banco de dados no sql e coloque as datas de feriado no formato MM / DD / AAAA como Varchar Coloque o conteúdo abaixo em um arquivo getdate.php
Feliz codificação !!!! :-)
fonte
Você pode usar a função noWeekends para desativar a seleção de fim de semana
fonte
fonte
Nesta versão, mês, dia e ano determinam quais dias bloquear no calendário.
fonte
para dias incapacitantes, você pode fazer algo assim.
<input type="text" class="form-control datepicker" data-disabled-days="1,3">
onde 1 é segunda-feira e 3 é quarta-feirafonte
Na versão mais recente do Bootstrap 3 (bootstrap-datepicker.js),
beforeShowDay
espera-se um resultado neste formato:Como alternativa, se você não se importa com o CSS e a dica de ferramenta, basta retornar um booleano
false
para tornar a data não selecionável.Além disso, não há
$.datepicker.noWeekends
, então você precisa fazer algo como:fonte
Para sábado e domingo, você pode fazer algo assim
fonte