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?
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)
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:
- une chaîne dans le dateFormat actuel ou
- Nombre de jours à partir d'aujourd'hui (par exemple + 7) ou
- 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');
Utiliser minDate comme chaîne:
$('#datePickerId').datepicker({minDate: '0'});
Cela définirait aujourd'hui comme date minimale sélectionnable .
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));
}
});
Change la minDate dynamiquement
.datepicker("destroy")
Par exemple
<script>
$(function() {
$( "#datepicker" ).datepicker("destroy");
$( "#datepicker" ).datepicker();
});
</script>
<p>Date: <input type="text" id="datepicker" /></p>
Début du mois à partir de 0. 0 = janvier, 1 = février, 2 = mars, ..., 11 = décembre.
Il n'est pas nécessaire de détruire l'instance courante, juste actualiser.
$('#datepicker')
.datepicker('option', 'minDate', new Date)
.datepicker('refresh');