web-dev-qa-db-fra.com

la modification de l'option minDate dans JQuery DatePicker ne fonctionne pas

J'ai déclaré une instance de sélecteur de dates 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. Étais-je supposé faire autre chose? Quelles autres causes possibles pourrait-il y avoir?

31
Draco

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 le mois (ex. pour juin est -> 6 -1)

25
Marcin

Comment modifier dynamiquement le minDate (après init)

Les réponses ci-dessus traitent de la façon de définir la minDate par défaut à l'initialisation, mais la question était en fait de savoir comment modifier dynamiquement la minDate, ci-dessous, je précise également comment définir la minDate par défaut.

Tout ce qui n'allait pas avec la question d'origine était que la valeur minDate en cours de définition 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 consiste à avoir une date de fin que 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 (à l'init)

Il suffit de répondre à cette question pour les meilleures pratiques; l'option minDate attend l'un des éléments suivants:

  1. une chaîne dans le format de date 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 les semaines, 'd' pour les jours, par exemple '-1y -1m')

@bogart mettre la chaîne à "0" est une solution car elle satisfait l'option 2 ci-dessus

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

documents jQuery UI pour minDate

61
Duncanmoo

Utilisez minDate comme chaîne:

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

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

23
Nikola K.

Changer la minDate dynamiquement

.datepicker("destroy")

Par exemple

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

  <p>Date: <input type="text" id="datepicker" /></p>
4

Il n'est pas nécessaire de détruire l'instance actuelle, il suffit de l'actualiser.

$('#datepicker')
    .datepicker('option', 'minDate', new Date)
    .datepicker('refresh');
2
David

Supposons que nous ayons deux champs de sélection de date, champ1 et champ2. la date du champ 2 dépend du champ 1

$('#field2').datepicker();
$('#field1').datepicker({
  onSelect: function(dateText, inst) {
    $('#field2').val("");
    $('#field2').datepicker("option", "minDate", new Date(dateText));
  }
});
2
SKR

Le mois commence à partir de 0. 0 = janvier, 1 = février, 2 = mars, ..., 11 = décembre.

1
koala