Je rencontre des problèmes avec le script datepicker de jQuery UI et j'espère que quelqu'un ici pourra vous aider.jQuery UI datepicker reinstantiation blues
Je dois pouvoir créer dynamiquement les éléments qui nécessitent le plugin datepicker, puis les détruire, puis les recréer. (Je fais un usage intensif de jTemplates pour cela.)
Malheureusement, datepicker ne semble fonctionner que la première fois qu'un élément est créé, même lorsqu'il est réinstancié.
Par exemple, disons que je l'ai inséré le code HTML suivant dans le DOM dynamiquement à l'aide jTemplates:
<div id="dateWrapper">
<input type="text" id="dateChooser" />
</div>
J'instancier alors le datepicker:
$("#dateChooser").datepicker();
Cela fonctionne comme un charme.
Cependant, si je retire alors l'élément dateWrapper du DOM ...
$("#dateWrapper").remove();
... et puis re-insérer une deuxième fois à l'aide jTemplates, exactement le même que précédemment, un second appel pour instancier datepicker ...
$("#dateChooser").datepicker();
... ne fonctionne plus. J'ai essayé d'appeler la méthode destroy de datepicker avant de supprimer #dateWrapper du DOM, et j'ai même essayé manuellement de supprimer le # ui-datepicker-div qui est injecté dans le bas du DOM quand datepicker est instancié pour la première fois. Cependant, aucun d'entre eux n'a résolu le problème.
Quelqu'un a-t-il d'autres idées? Je détesterais devoir abandonner datepicker, car c'est un joli petit calendrier, et je fais déjà un usage intensif de jQuery UI. Cependant, cela peut être un dealbreaker pour moi si je ne peux pas trouver une solution de contournement.
Merci d'avance pour votre aide.
Travis
Est-ce que ça marche si vous créez un élément avec un ID différent? par exemple 'dateWrapper-2'. Si c'est le cas, il ne devrait pas être si difficile d'utiliser un générateur UUID pour chaque nouvel élément. –
Après plus d'expérimentation il semble que je me suis trompé sur la cause du problème ... Apparemment, lorsque datepicker injecte son html, il attribue un z-index de 10000 à l'enveloppe. J'utilise aussi z-index: 10000 pour décrire mes couches supérieures (juste une habitude) - et c'était contradictoire. Dès que j'ai changé tous mes couches supérieures personnalisées à z-index 9999 datepicker a bien fonctionné. Donc, moral de l'histoire: Si vous utilisez datepicker, évitez z-index: 10000 pour les autres éléments sur la page. – Travis