IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Evénement sur un formulaire généré dynamiquement


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de dotEden
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 66
    Par défaut Evénement sur un formulaire généré dynamiquement
    Bonjour,

    J'ai actuellement des difficultés avec le JavaScript.
    Je génère un formulaire html en JQuery sur l’événement ready() du document et j'aimerais utiliser la méthode ajax sur ce dernier.

    Voici mon code source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $(document).ready(function() {
        var html = '';
        html += '<div id="background_add">';
        html += '<form id="form_background" action="/background/create" method="post">';
        html += '<input type="text" class="input-small" required="required" name="background[tag]" id="background_tag">';
        html += '<input type="submit" value="Add" class="btn btn-link">';
        html += '</form></div>';
     
        $('#patient_background').parent().append(html);
    });
     
    $('#form_background').submit(function(event) {
        var type = $(this).attr('method');
        var url = $(this).attr('action');
     
        $.ajax({
            type: type,
            url: url,
            data: $(this).serialize(),
            dataType: "html",
            success: function(response) {
                alert("lol");
                console.log(response);
            }
        });
     
        return false;
    });
    Le formulaire s'affiche correctement, cependant la fonction de l'événement submit n'est pas exécutée lors du clic sur le bouton d'envoi.

    Je me creuse là tête depuis une heure dessus, ainsi j'en appelle à votre aide.

    Merci de votre aide.

    Cordialement.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il y a effectivement un problème de conception et de chronologie dans le code...

    Je génère un formulaire html en JQuery sur l’événement ready() du document
    OK, donc jQuery va attendre que le DOM soit prêt pour insérer le formulaire.
    Le problème, c'est que le code qui se trouve en dehors du .ready() (dont ta gestion du submit) va être interprété et exécuté au moment où il est rencontré par le parseur, c'est-à-dire bien avant que les éléments existent dans le DOM. Donc ta gestion d'événement ne s'applique à aucun formulaire puisqu'aucun ne correspond au sélecteur quand le code est interprété.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre actif Avatar de dotEden
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 66
    Par défaut
    Merci de m'accorder de ton temps, mais j'ai évidemment essayé de mettre l'évenement submit dans l'événement ready(), mais j'ai le même résultat.
    Si ça peut aider, j'ai exactement le même code qui fonctionne lorsque le formulaire n'est pas généré par le Javascript

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Code dynamique, on(), etc. (déjà traité X fois sous diverses formes) : $( "body" ).on( "submit", "#form_background", function( event ){ ... });.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre actif Avatar de dotEden
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 66
    Par défaut
    Merci beaucoup, j'essayerais demain et je vous ferais un retour.

  6. #6
    Membre actif Avatar de dotEden
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 66
    Par défaut
    Ta solution ne fonctionne pas.

    Voici mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $(document).ready(function() {
        var html = '';
        html += '<div id="background_add">';
        html += '<form id="form_background" action="/background/create" method="post">';
        html += '<input type="text" class="input-small" required="required" name="background[tag]" id="background_tag">';
        html += '<input type="submit" value="Add" class="btn btn-link">';
        html += '</form></div>';
     
        $('#patient_background').parent().append(html);
     
        $('body').on('submit', '#form_background', function(event) {
            var type = $(this).attr('method');
            var url = $(this).attr('action');
     
            $.ajax({
                type: type,
                url: url,
                data: $(this).serialize(),
                dataType: "html",
                success: function(response) {
                    alert("lol");
                    console.log(response);
                }
            });
     
            event.preventDefault();
        });
    });
    Évidemment, je n'ai aucune erreur Javascript sur la page.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/09/2013, 18h05
  2. Tester un formulaire généré dynamiquement
    Par pra3t0r dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/02/2012, 13h34
  3. [AC-2007] Evènement sur clic Graph Croisé Dynamique
    Par triaguae dans le forum IHM
    Réponses: 4
    Dernier message: 29/05/2010, 13h59
  4. [AC-2002] Evénement sur sous formulaire quand champ père change.
    Par philou22 dans le forum IHM
    Réponses: 2
    Dernier message: 15/03/2010, 22h36
  5. Evènement sur ouverture d'un formulaire en mode création ?
    Par marchand_de_sable dans le forum Access
    Réponses: 8
    Dernier message: 09/09/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo