Ajout dynamique d'un input type radio

Résolu/Fermé
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 - 1 oct. 2018 à 18:06
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 - 2 oct. 2018 à 11:41
Bonjour,

Dans un formulaire j'ai différents tableaux avec à la fin de chacun un bouton ajouter qui me permet d'ajouter une ligne que l'utilisateur peut ensuite renseigner. Cette ligne comporte un champ texte suivi de plusieurs radio buttons qui correspondent à différents choix.

J'ai une fonction javascript qui se déclenche lors du clic sur un des radio buttons. Cette fonction fonctionne correctement sur les radio buttons qui sont présents initialement dans mon formulaire, cependant les radio button qui sont générés lors du clic sur le bouton ajouter ne sont pas pris en compte.


$('input:radio').on('ifClicked', function(e){
...
}

On dirait que cet évènement prend bien en compte les radio buttons chargés lors du premier chargement de la page mais pas les nouveaux ajoutés dynamiquement.

Quelqu'un aurait-il une idée pour corriger ce comportement?

Cordialement,
A voir également:

1 réponse

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 718
Modifié le 1 oct. 2018 à 20:07
Bonjour,

En effet, les actions ne sont attachées qu'aux éléments déjà présents dans la page...
Il faut donc, après l'ajout de nouveaux éléments, réinstancier l'évènement sur tes éléments.

Perso, je place le code d'initialisation dans une fonction.. que j'appel à chaque fois que j'en ai besoin
function init_radio(){
  $('input:radio').on('ifClicked', function(e){
     ...
  }
}

Au chargement de la page
 $(document).ready(function(){
    init_radio();
 });


Puis après le code qui génère tes nouveaux éléments
 init_radio();


0
blackduck Messages postés 817 Date d'inscription mercredi 20 février 2013 Statut Membre Dernière intervention 24 novembre 2018 96
2 oct. 2018 à 11:41
Merci pour la réponse , ça marche nickel ;).

A bientôt
0