modification de l'option minDate dans jQuery DatePicker ne fonctionne pas

J'ai déclaré une instance de sélecteur de date comme suit:

    $("#datePickerId").datepicker(
    { dateFormat: 'DD, d MM yy',
      minDate: 0,
      showOn: 'button',
      buttonImage: '../../images/calendar.gif',
      buttonImageOnly: true,
      hideIfNoPrevNext: true
    }
   );

Je veux maintenant passer à l'option minDate donc je fais ceci:

$('#datePickerId').datepicker('option', 'minDate', 3);

Mais rien ne se passe. Pouvais-je faire autre chose? Quelles autres causes possibles pourraient-il y avoir?

30
demandé sur Draco 2009-05-11 13:04:26

7 réponses

Draco,

, Vous pouvez le faire comme ceci:

$("#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
    }
   );

N'oubliez pas d'écrire -1 après un mois (ex. pour Juin est - > 6 -1)

24
répondu Svetlozar Angelov 2010-03-24 15:32:14

Comment modifier dynamiquement le minDate (après l'initialisation)

Les réponses ci-dessus expliquent comment définir le minDate par défaut à init, mais la question était en fait de savoir comment modifier dynamiquement le minDate, ci-dessous je précise également comment définir le MinDate par défaut.

Tout ce qui était faux avec la question initiale était que la valeur minDate définie aurait dû être une chaîne (n'oubliez pas les guillemets):

$('#datePickerId').datepicker('option', 'minDate', '3');

MinDate accepte également un objet date et une utilisation courante est d'avoir une date de fin vous essayez de calculer donc quelque chose comme ça pourrait être utile:

$('#datePickerId').datepicker(
    'option', 'minDate', new Date($(".datePop.start").val())
);

Comment définir la minDate par défaut (à init)

Juste répondre à cela pour la meilleure pratique; l'option minDate attend l'un des:

  1. une chaîne dans le dateFormat actuel ou
  2. Nombre de jours à partir d'aujourd'hui (par exemple + 7) ou
  3. chaîne de valeurs et de périodes ('y' pour les années, ' m 'pour les mois,' w ' pour semaines, 'd' pour les jours, par exemple '-1y -1m)

@ bogart définir la chaîne sur "0" est un solution telle qu'elle satisfait l'option 2 ci-dessus

$('#datePickerId').datepicker('minDate': '3');

JQuery UI docs pour minDate

61
répondu Duncanmoo 2012-06-21 07:46:57

Utiliser minDate comme chaîne:

$('#datePickerId').datepicker({minDate: '0'});

Cela définirait aujourd'hui comme date minimale sélectionnable .

23
répondu Nikola K. 2009-06-26 07:15:18

Disons que nous avons deux champs de sélection de date, field1 et field2. field2 date dépend de field1

$('#field2').datepicker();
$('#field1').datepicker({
  onSelect: function(dateText, inst) {
    $('#field2').val("");
    $('#field2').datepicker("option", "minDate", new Date(dateText));
  }
});
2
répondu SKR 2012-08-29 12:10:58

Change la minDate dynamiquement

.datepicker("destroy")

Par exemple

<script>
    $(function() {
      $( "#datepicker" ).datepicker("destroy");
      $( "#datepicker" ).datepicker();
    });
  </script>

  <p>Date: <input type="text" id="datepicker" /></p>
2
répondu Naveen Kumar Alonekar 2013-10-23 11:34:08

Début du mois à partir de 0. 0 = janvier, 1 = février, 2 = mars, ..., 11 = décembre.

1
répondu koala 2010-09-20 08:46:49

Il n'est pas nécessaire de détruire l'instance courante, juste actualiser.

$('#datepicker')
    .datepicker('option', 'minDate', new Date)
    .datepicker('refresh');
1
répondu David 2016-06-23 12:19:12