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?

Foi útil?

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:

  1. uma string no dateFormat atual ou
  2. número de dias de hoje (por exemplo 7) OU
  3. 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');

jQuery UI docs para minDate

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top