web-dev-qa-db-fra.com

Datepicker renvoyant un type non prisError: undefined 'currentDay'

J'utilise jQuery UI avec Bootstrap et il semble que je rencontre un problème que je n'ai jamais rencontré auparavant. Je ne suis pas sûr de ce qui a changé. J'ai essayé de mettre en place une version différente de jQuery et je n'ai pas mis à jour l'interface utilisateur de jQuery entre-temps. Donc, je ne sais pas exactement ce qui a éclaté.

L'erreur de la console lorsque je clique sur une date dans le sélecteur de date renvoie:

Uncaught TypeError: Cannot set property 'currentDay' of undefined 

Le code est assez simple, comme on pourrait s'y attendre d'un datpicker:

$(".datepicker").datepicker({
dateFormat: 'dd-mm-yy'
}); 

Avec le code HTML suivant:

<input type="text" class="datepicker" />

S'agit-il d'un bogue à signaler (aucune autre correspondance Google n'étant affichée) ou s'agit-il d'autre chose que j'ai manquée?

40
Bjorn Schijff

J'ai trouvé la solution. Après une longue période de débogage, j'ai découvert qu'il y avait un <div> qui avait exactement la même ID, plus haut que le champ de saisie. Par conséquent, le script a pris la première instance contenant la variable ID et a sélectionné la variable DIV au lieu du champ input.

J'ai supprimé/renommé le DIV et cela a fonctionné bien à nouveau.

119
Bjorn Schijff

L'erreur ci-dessus de jQuery datepicker est généralement provoquée par le fait que plusieurs contrôles ont le même ID, que vous utilisiez id ou un autre sélecteur, tel que la classe css ou le nom du champ, pour l'instancier.

18
i--

mettre un sélecteur.

<script>  $("#formID #duplicatedId").datepicker({language: 'he'});
</script>

FormID: Id du formulaire contenant l'entrée.

duplicatedId: Id de l'élément d'entrée.

1
gozgunes

J'avais aussi cette erreur. J'ai constaté qu'ailleurs sur le formulaire, j'avais une étiquette "pour" des attributs qui ne correspondaient pas aux identifiants sur les entrées de formulaire - il semble que cela puisse confondre datepicker. Une fois que j'ai corrigé ces problèmes, tout a bien fonctionné et l'erreur a disparu. Suivez les conseils d'Andreas (+1 pour cela!) Et validez vos formulaires. La barre d'outils de développeur Web de Chris Pederick vous permet de valider facilement au fur et à mesure. 

1
Charles Wyke-Smith

Peut-être deux zones de saisie ayant la même classe sans identifiant différent et pour cela vous essayez pour le sélecteur de date. Si c'est le cas, donnez deux identifiants différents, cela fonctionnera.

0
Venkatesan

Dans mon cas, je déclenchais le sélecteur de date d'un div contre un champ de saisie masqué et getPos (a) provoquait un message non défini sur la variable "a". J'ai essayé de déplacer le champ d'entrée caché à l'extérieur d'un div et cela a fait l'affaire. Notez que jQuery pouvait trouver le champ de saisie quel que soit l'endroit où il se trouvait. Ce n'était donc pas le problème, mais le positionnement. J'espère que ceci aide quelqu'un d'autre.

0
saswanb

J'ai rencontré ce problème aussi, et j'étais sûr à 100% de ne pas utiliser l'identifiant en double… .. Après un certain débogage, j'ai découvert une raison - j'utilisais le mod DataTables, qui duplique le contenu de tfoot, créant ainsi une copie exacte d'éléments datepicker. Et j’ai eu cette entrée datepicker en ligne tfoot.

Correction de ce problème avec:

table.find("TFOOT").find("TR:first").remove();

Qui s'appelle AFTER table.DataTable (....)

Ceci a supprimé la ligne originale de hauteur zéro avec tout le contenu;

0
Sergey