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

JavaScript Discussion :

Deux formulaires sur la même page


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut Deux formulaires sur la même page
    Bonjour,

    J'ai 2 formulaires sur la même page, je veux savoir en événement focus sur un input, cet input appartient à quel formulaire:

    Formulaire1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form name="form1">
    <input type="text" name="inpt1" id="inpt1">
    </form>
    Formulaire2:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form name="form2">
    <input type="text" name="inpt2" id="inpt2">
    </form>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $('input').click(function(){
      var get = $(this).parent('form').attr('name');
      alert(get);
      });
    J'utilise la méthode parent pour cette exemple, si vous avez une autre solution en ajoutant une balise avant le input, ça retourn undefined:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <form name="form2">
    <ul>
    <li>
    <input type="text" name="inpt2" id="inpt2">
    </li>
      </ul>
    </form>
    Merci d'avance

  2. #2
    Membre confirmé Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Points : 509
    Points
    509
    Par défaut
    quand parent reçoit un attribut, c'est pour filtrer les résultats déjà obtenus, pas pour cibler un parent plus en aval dans l'arborescence.
    tu peux donc y arriver ainsi:
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $('input').click(function(event){
      var get = event.target;
      while (get.parentNode.tagName.toLowerCase()!=="form" && get.parentNode!==document.documentElement) {
               // la seconde condition n'est pas indispensable, elle sert juste à éviter l'infinite loop si l'input n'est pas dans un formulaire
               get=get.parentNode;
      }
      get=get.name;
      alert(get);
    });
    0x4F

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    parent() cible le parent direct.
    Pour peu que l'<input> soit dans un <p> (ou autres balises), parent() ne renverra pas la bonne valeur.

    Il vaut mieux utiliser closest() :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $(document).ready(function(){
    	$('input').click(function(){
    		var form_name = $(this).closest('form').attr('name');
    		alert( form_name );
    	});
    });

    @01001111
    Pourquoi chercher à ré-inventer la roue ?

  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 : 73
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Il ne faut pas confondre les méthodes parent() et parents() : var get = $(this).parents('form').attr('name');

    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 du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    @01001111: J'ai essayé votre code et ça retourne undefined

    @jreaux62: marche très bien

    @danielhagnoul: C'est quoi la difference entre parents et parent?

    Une autre question, alert($(this)) retourne [Object Object], comment puis je trouver le contenu de cet object?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Dis,

    nos réponses ne te dispensent pas de recherches personnelle !

    : "jquery parents"

    Et je t'ai mis des liens pour "parent" et "closest". Les as-tu suivi ?

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    La seule confusion que j'ai, est ce parents peut nous rendre plusieurs éléments, ou bien elle retourne le résultat trouvé après elle s'arrête

  8. #8
    Invité
    Invité(e)
    Par défaut
    .parents()

    Qu'est-ce qui t'empêche de faire des tests ?

    (et si tu ne comprends pas l'anglais; il existe des traducteurs en ligne)

    Pour acquérir des connaissances, la meilleure (et seule) méthode a toujours été... d'apprendre !

  9. #9
    Membre confirmé Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Points : 509
    Points
    509
    Par défaut
    Désolé d'avoir voulu réinventer la roue pour le coup!
    j'avais mis un parentNode en trop et je ne connaissais ni l'existence de closest(), ni de parents()
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $('input').click(function(event){
      var get = event.target;
      while (get.tagName.toLowerCase()!=="form" && get.parentNode!==document.documentElement) {
               // la seconde condition n'est pas indispensable, elle sert juste à éviter l'infinite loop si l'input n'est pas dans un formulaire
               get=get.parentNode;
      }
      get=get.name;
      alert(get);
    });
    0x4F

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Bonsoir,

    une méthode plus "classique" (sans bibliothèque de fonctions) :
    Code javascript : 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
    window.onload = function(){
    	document.getElementById("inpt1").onclick = function(){getParent(this)};
    	document.getElementById("inpt2").onclick = function(){getParent(this)};
    };
     
    function getParent(src)
    {
    	var srcId;
    	var e;
    	srcId = src.id;
    	e = src.parentNode;
    	while (e.tagName.toLowerCase()!="form")
    		e = e.parentNode;
     
    	alert(srcId + " a pour parent " + e.name);
    }

  11. #11
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    quand les usines à gaz font des ravages
    Ravages car il existe une propriété simple des éléments d'un formulaire, « form ».

    Soit avec le code HTML suivant
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form name="form_1">
      <input type="text" name="input_1">
    </form>
    <form name="form_2">
      <input type="text" name="input_2">
    </form>
    et par exemple le code javascript suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function fctFocus(){
        console.log( this.form.name);
    }
    var oElems = document.querySelectorAll('[name^=input_]');
    var i, nb = oElems.length;
    for( i=0; i < nb; i +=1){
        oElems[i].onfocus = fctFocus;
    }

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

Discussions similaires

  1. [Spring MVC] Deux formulaires sur une même page
    Par djodjo dans le forum Spring Web
    Réponses: 1
    Dernier message: 20/10/2008, 09h52
  2. [MooTools] Deux évenement sur une même page
    Par enima83 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 01/07/2008, 17h31
  3. Plusieurs formulaires sur une même page
    Par patsak dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2008, 16h14
  4. [JpGraph] Placer deux graphes sur une même page
    Par am.adnane dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/05/2007, 01h04
  5. Comment disposer deux formulaires sur la même ligne ??
    Par soad029 dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 05/05/2007, 04h14

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