web-dev-qa-db-fra.com

Problèmes avec .datepicker ('setdate'), dans jQuery

J'ai une fonction qui exécute une requête pour obtenir des données basées sur une certaine plage de dates qui est sélectionnée à l'aide de .datepicker (). J'essaie de redéfinir le sélecteur de date qui se trouve dans les données de réponse sur la plage de dates qui a été sélectionnée avant l'exécution de la requête.

queryDate = '2009-11-01';
$('#datePicker').datepicker('setDate', queryDate);

a le résultat intéressant de régler le sélecteur de date sur la date d'aujourd'hui! Je ne serais pas si confus si ça crachait juste une erreur. Pourquoi le fixe-t-il à la date d'aujourd'hui?

Comment puis-je prendre la date qui est formatée comme, 'aaaa-mm-jj' et y définir le sélecteur de date?

Je pense qu'il serait préférable de simplement définir la zone de texte à laquelle le sélecteur de date est lié à "queryDate".

35
Derek Adair

Si vous souhaitez prendre en charge des navigateurs très anciens, vous devez analyser la chaîne de date, car l'utilisation du format de date ISO8601 avec le constructeur Date n'est pas prise en charge avant IE9:

var queryDate = '2009-11-01',
    dateParts = queryDate.match(/(\d+)/g)
    realDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2]);  
                                    // months are 0-based!
// For >= IE9
var realDate = new Date('2009-11-01');  

$('#datePicker').datepicker({ dateFormat: 'yy-mm-dd' }); // format to show
$('#datePicker').datepicker('setDate', realDate);

Vérifiez l'exemple ci-dessus ici .

34
CMS

Lorsque vous essayez d'appeler setDate, vous devez fournir un objet Date javascript valide.

queryDate = '2009-11-01';

var parsedDate = $.datepicker.parseDate('yy-mm-dd', queryDate);

$('#datePicker').datepicker('setDate', parsedDate);

Cela vous permettra d'utiliser différents formats pour la date de requête et la représentation de la date de chaîne dans le sélecteur de date. Cette approche est très utile lorsque vous créez un site multilingue. Une autre fonction utile est formatDate, qui formate l'objet de date javascript en chaîne.

$.datepicker.formatDate( format, date, settings );
73
jurka

Comme l'indique la publication de Scobal, le sélecteur de date recherche un objet Date - pas seulement une chaîne! Donc, pour modifier votre exemple de code pour faire ce que vous voulez:

var queryDate = new Date('2009/11/01'); // Dashes won't work
$('#datePicker').datepicker('setDate', queryDate);
10
Matt Ball

Essayez de le changer en:

queryDate = '2009-11-01';
$('#datePicker').datepicker({defaultDate: new Date (queryDate)});
7
Mark Pope
function calenderEdit(dob) {
    var date= $('#'+dob).val();
    $("#dob").datepicker({
        changeMonth: true,
        changeYear: true, yearRange: '1950:+10'
    }).datepicker("setDate", date);
}
2
jomon

Vérifiez que la date à laquelle vous essayez de la définir se situe dans la plage de dates autorisée si les options minDate ou maxDate sont définies.

1
cfwall