mudando opção minDate em JQuery DatePicker não funciona
-
21-08-2019 - |
Pergunta
Eu anunciei uma instância de selecionador de data da seguinte forma:
$("#datePickerId").datepicker(
{ dateFormat: 'DD, d MM yy',
minDate: 0,
showOn: 'button',
buttonImage: '../../images/calendar.gif',
buttonImageOnly: true,
hideIfNoPrevNext: true
}
);
Agora quero alteração na opção minDate então eu fazer isso:
$('#datePickerId').datepicker('option', 'minDate', 3);
Mas nada acontece. Eu estava a fazer supor que qualquer outra coisa? Que outras possíveis causas poderia haver?
Solução
Draco,
Você pode fazê-lo como este:
$("#datePickerId").datepicker(
{ dateFormat: 'DD, d MM yy',
minDate: new Date(2009, 10 - 1, 25), // it will set minDate from 25 October 2009
showOn: 'button',
buttonImage: '../../images/calendar.gif',
buttonImageOnly: true,
hideIfNoPrevNext: true
}
);
Lembre-se de escrever -1 após mês (ex para junho é -.> 6 -1)
Outras dicas
Como alterar dinamicamente o minDate (após o init)
O endereço respostas acima como definir o padrão minDate na inicialização, mas a questão era realmente como alterar dinamicamente a minDate, abaixo eu também esclarecer Como definir o padrão minDate.
Tudo o que havia de errado com a pergunta original era que o valor minDate sendo set deve ter sido uma string (não esqueça as aspas):
$('#datePickerId').datepicker('option', 'minDate', '3');
minDate também aceita um objeto de data e um uso comum é ter uma data final que você está tentando calcular assim que algo como isso poderia ser útil:
$('#datePickerId').datepicker(
'option', 'minDate', new Date($(".datePop.start").val())
);
Como definir o padrão minDate (na inicialização)
Apenas responder a esta para as melhores práticas; a opção minDate espera que um dos seguintes:
- uma string no dateFormat atual ou
- número de dias de hoje (por exemplo 7) OU
- string de valores e períodos ( 'y' para os anos, 'm' por meses, 'w' para semanas, 'd' para dia, por exemplo '-1y -1m')
@bogart definindo a cadeia de "0" é uma solução que satisfaça a opção 2 acima
$('#datePickerId').datepicker('minDate': '3');
Use minDate como string:
$('#datePickerId').datepicker({minDate: '0'});
Este seria definido hoje como data selecionável mínimo.
Alterar o minDate dinamicamente
.datepicker("destroy")
Por exemplo
<script>
$(function() {
$( "#datepicker" ).datepicker("destroy");
$( "#datepicker" ).datepicker();
});
</script>
<p>Date: <input type="text" id="datepicker" /></p>
Digamos que temos dois campos de data seletos, campo1 e campo2. data field2 depende campo1
$('#field2').datepicker();
$('#field1').datepicker({
onSelect: function(dateText, inst) {
$('#field2').val("");
$('#field2').datepicker("option", "minDate", new Date(dateText));
}
});
Não há necessidade de destruir instância atual, basta atualizar.
$('#datepicker')
.datepicker('option', 'minDate', new Date)
.datepicker('refresh');
Mês começar do 0. 0 = Janeiro, 1 = fevereiro de 2 = Março, ..., 11 = Dezembro.