J’ai deux champs datepicker, l’un est ‘ date de début ‘, l’autre ‘ date_fin ‘.
Je voudrais avoir la fonctionnalité qui, après que l’utilisateur a sélectionné « date de début », puis le calendrier « date de fin » devrait afficher par défaut le mois contient la « date de début ».
Si l’utilisateur choisit d’abord la date de fin , le calendrier de la date de début doit indiquer que le mois contient la date de fin sélectionnée.
comment implémenter à l’intérieur de jQuery datepicker? Quelles sont les options datepicker que je devrais définir?
$("#start_date").datepicker({ //which datepicker options should put here? })
Ceci définit la date par défaut de l’autre calendrier comme vous le souhaitez. Si une date est déjà sélectionnée, cela ne la change pas.
$(document).ready(function() { $( "#datepicker" ).datepicker({onSelect: function(dateText, inst) { $( "#datepicker2" ).datepicker( "option", "defaultDate", dateText ); }}); $( "#datepicker2" ).datepicker({onSelect: function(dateText, inst) { $( "#datepicker" ).datepicker( "option", "defaultDate", dateText ); }}); });
Si vous voulez forcer l’autre sélecteur de date à réinitialiser la date déjà sélectionnée sur l’autre mois du calendrier, utilisez ceci:
$(document).ready(function() { $( "#datepicker" ).datepicker({onSelect: function(dateText, inst) { $( "#datepicker2" ).datepicker( "setDate" , dateText ) }}); $( "#datepicker2" ).datepicker({onSelect: function(dateText, inst) { $( "#datepicker" ).datepicker( "setDate" , dateText ) }}); });
Ma suggestion est de sauvegarder la date sélectionnée dans datepicker1
et, avant d’afficher le datepicker2
, de définir manuellement la même date. Donc, datepicker1.date == datepicker2.date
. J’espère que ça t’aide.
var dateselected = ''; $( "#datepicker1" ).datepicker({ onSelect: function(dateText, inst) { dateselected = dateText; } }); $( "#datepicker2" ).datepicker({ beforeShow: function(input, inst) { if(dateselected != '') $( "#datepicker2" ).datepicker('setDate',dateselected); } });
Vous pouvez le voir en cours d’exécution dans le lien suivant: http://jsbin.com/orizi4
Vous pouvez essayer ceci pour éviter à l’utilisateur de sélectionner une end-date
inférieure start-date
start-date
et une start-date
start-date
supérieure à la start-date
de end-date
.
$("#start_date").datepicker({ defaultDate: '-7d', changeMonth: true, changeYear: true, onSelect: function (dateStr) { $("end-date").datepicker('option', 'minDate', $(this).datepicker('getDate') || '-1m'); } }); $("end-date").datepicker({ defaultDate: new Date(), changeMonth: true, changeYear: true, onSelect: function (dateStr) { $("#start_date").datepicker('option', 'maxDate', $(this).datepicker('getDate') || 0); } });