124 votes

placement de datepicker() sur des éléments créés dynamiquement - JQuery/JQueryUI

J'ai créé dynamiquement des zones de texte, et je veux que chacune d'elles puisse afficher un calendrier en cliquant. Le code que j'utilise est :

$(".datepicker_recurring_start" ).datepicker();

Ce qui ne fonctionnera que sur la première zone de texte, même si toutes mes zones de texte ont une classe appelée datepicker_recurring_start.

Votre aide est très appréciée !

49voto

Tapash Points 69

Pour moi ci-dessous jquery a travaillé :

changer "body" en document

$(document).on('focus',".datepicker_recurring_start", function(){
    $(this).datepicker();
});

Merci à skafandri

Remarque : assurez-vous que votre identifiant est différent pour chaque champ

18voto

pleshy Points 334

Excellente réponse de skafandri +1

Ceci est juste mis à jour pour vérifier la classe hasDatepicker.

$('body').on('focus',".datepicker", function(){

    if( $(this).hasClass('hasDatepicker') === false )  {
        $(this).datepicker();
    }

});

12voto

wintondeshong Points 179

Assurez-vous que votre élément avec la classe .date-picker N'A PAS déjà une classe hasDatepicker. Si c'est le cas, même une tentative de réinitialisation avec $myDatepicker.datepicker(); échouera ! Au lieu de cela, vous devez faire...

$myDatepicker.removeClass('hasDatepicker').datepicker();

6voto

Tr1stan Points 1400

Vous devez exécuter à nouveau .datepicker(); après avoir créé dynamiquement les autres éléments de la zone de texte.

Je recommande de le faire dans la méthode de rappel de l'appel qui ajoute les éléments à la DOM.

Donc, disons que vous utilisez la méthode JQuery Load pour extraire les éléments d'une source et les charger dans le DOM, vous feriez quelque chose comme ceci :

$('#id_of_div_youre_dynamically_adding_to').load('ajax/get_textbox', function() {
  $(".datepicker_recurring_start" ).datepicker();
});

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