241 votes

Comment pré-remplir une zone de texte Datepicker de jQuery avec la date du jour ?

J'ai un calendrier jQuery Datepicker très simple :

$(document).ready(function(){
    $("#date_pretty").datepicker({ 
    });
});

et bien sûr dans le HTML...

<input type="text" size="10" value="" id="date_pretty"/>

La date d'aujourd'hui est joliment mise en évidence pour l'utilisateur lorsqu'il affiche le calendrier, mais comment faire pour que jQuery pré-remplisse la zone de texte avec la date d'aujourd'hui au chargement de la page, sans que l'utilisateur ait à faire quoi que ce soit ? Dans 99 % des cas, la date du jour par défaut correspond à ce que l'utilisateur souhaite.

7 votes

La réponse la plus populaire est meilleure que la réponse acceptée. Il est préférable de changer la réponse acceptée.

0 votes

1 votes

@ahmadalishafiee (et tous les autres). La solution actuellement acceptée a été acceptée le 2015-05-07.

573voto

CiscoIPPhone Points 6151

Mise à jour : Des rapports indiquent que cela ne fonctionne plus dans Chrome.

Il est concis et fait le travail (obsolète) :

$(".date-pick").datepicker('setDate', new Date());

C'est moins concis et utilise enchaînement lui permet de fonctionner dans chrome (2019-06-04) :

$(".date-pick").datepicker().datepicker('setDate', new Date());

2 votes

C'est celle qui a réellement fonctionné pour moi et non la solution acceptée. Je vous remercie.

0 votes

Je voudrais suggérer que stackoverflow mette la réponse la plus votée en haut de la page, plutôt que de la laisser telle quelle. Par exemple, ce que Youtube a fait est bien.

0 votes

+1, l'utilisation de l'objet Date est beaucoup plus propre et exempte de bogues. Notez que vous pouvez utiliser des éléments tels que var myDate = new Date(); myDate.setFullYear(1985); myDate.setMonth(0); /* month is zero-based */ myDate.setDate(28); voir plus developer.mozilla.org/fr/US/docs/Web/JavaScript/Référence/

226voto

David K Egghead Points 4564

Vous devez d'ABORD appeler datepicker() > puis utilisez 'setDate' pour obtenir la date actuelle.

$(".date-pick").datepicker();
$(".date-pick").datepicker("setDate", new Date());

OU enchaîner l'appel de la méthode setDate après l'initialisation de votre afficheur de date, comme indiqué dans un commentaire sur cette réponse

$('.date-pick').datepicker({ /* optional option parameters... */ })
               .datepicker("setDate", new Date());

Elle PAS travailler avec seulement

$(".date-pick").datepicker("setDate", new Date());

NOTE : Les paramètres setDate acceptables sont décrits ici

3 votes

En utilisant jQueryUI 1.8, j'ai trouvé que cette solution était la seule façon (saine) d'y parvenir.

13 votes

$(".selector").datepicker().datepicker("setDate", new Date()) ; fonctionnera et ne fera pas en sorte que jQuery cherche deux fois dans le DOM.

1 votes

Super, la réponse acceptée ne dit que $(".date-pick").datepicker("setDate", new Date()) ; et cela ne fonctionne pas sans l'appel préalable de $(".date-pick").datepicker() ; votre réponse est bien meilleure.

72voto

lucas Points 4344
var myDate = new Date();
var prettyDate =(myDate.getMonth()+1) + '/' + myDate.getDate() + '/' +
        myDate.getFullYear();
$("#date_pretty").val(prettyDate);

semble fonctionner, mais il y a peut-être une meilleure solution

0 votes

Cela fonctionne plutôt bien, sauf pour deux choses : 1) J'espérais en quelque sorte utiliser la méthode jQuery pour obtenir la date actuelle, mais peut-être que cela n'a pas d'importance. 2) cette solution produit une valeur exactement un mois avant la date d'aujourd'hui !

2 votes

OH - tu as raison ! vérifie-le - w3schools.com/jsref/jsref_obj_date.asp - le mois est 0-11 - vous devrez ajouter 1 curieusement, getDate est 1-31, mais getMonth est 0-11

3 votes

Il existe un moyen plus simple voir mon message ci-dessous.

59voto

Salman A Points 60620

Le site setDate() définit la date et met à jour le contrôle associé. Voici comment :

$("#datepicker1").datepicker({
    dateFormat: "yy-mm-dd"
}).datepicker("setDate", "0");

Démo

Comme mentionné dans la documentation, setDate() accepte heureusement l'objet JavaScript Date, un nombre ou une chaîne :

La nouvelle date peut être un objet Date ou une chaîne de caractères au format de la date actuel (par exemple, '26/01/2009'), un nombre de jours à partir d'aujourd'hui (par exemple, +7) ou une chaîne de valeurs et de périodes ('y' pour les années, 'm' pour les mois, 'w' pour les années). 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, etc. semaines, 'd' pour les jours, par exemple '+1m +7d'), ou null pour effacer la date sélectionnée. sélectionnée.

Au cas où vous vous poseriez la question, le réglage defaultDate dans le constructeur n'est pas mettre à jour le contrôle associé.

1 votes

Pourquoi est-ce que dans votre démo ça fonctionne. Lorsque je copie ce code dans mon site, la boîte de dialogue continue de s'afficher lors du chargement de la page.

1 votes

Cela a fonctionné pour moi - la réponse acceptée et les autres options ci-dessus n'ont pas fonctionné.

0 votes

C'est une bien, bien meilleure solution que toutes celles qui précèdent.

26voto

KirilleXXI Points 161

Régler sur aujourd'hui :

$('#date_pretty').datepicker('setDate', '+0');

Régler sur hier :

$('#date_pretty').datepicker('setDate', '-1');

Et ainsi de suite avec un nombre illimité de jours avant ou après date du jour .

Voir jQuery UI ' Méthodes ' setDate .

1 votes

Super, comme d'autres l'ont mentionné, vous devez avoir appelé datepicker() une fois déjà donc, $(".date-pick").datepicker("setDate", '+0');

0 votes

Cela a également fonctionné comme je le souhaitais, puisque mon dateFormat doit correspondre au format de date de MySQL (yy-mm-dd). Ce setDate ajoute un remplissage nul au mois et au jour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X