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 :

Div dans un form


Sujet :

JavaScript

  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut Div dans un form
    Bonjour,

    Je cherche à connaitre l'attirbut style.display de tous les éléments div class="error" présents dans un "form".

    Exemple :
    HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <form id="DeleteRecordForm">
        <fieldset id="DeleteRecordFieldset">
            <legend>Delete a record</legend>
            <div class="label"> Table : <i>*</i></div><div class="input"><input id="table" onblur="ValidateData(this.id)" /></div><div id="table_error" class="error">Champ obligatoire</div>
            <br />
            <div class="label"> Champ : <i>*</i></div><div class="input"><input id="field" onblur="ValidateData(this.id)" /></div><div id="field_error" class="error">Champ obligatoire</div>
            <br />
            <div class="label"> Login : <i>*</i></div><div class="input"><input id="login" onblur="ValidateData(this.id)" /></div><div id="login_error" class="error">Champ obligatoire</div>
            <br />
            <input id="DeleteRecord" type="button" value="Submit" onclick="SubmitVerification(this.id)" />
        </fieldset>
    </form>
    Dans mon css je met toutes les div de class "error" avec un display = none;Voici la fonction JS que j'ai commencé à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function SubmitVerification(id)
    {
        var elm = document.getElementById(id + 'Form').elements;
        for(var i=1; i<elm.lenght;i++)
        {
            if(elm[i].display.type == "inline-block")
                alert("error");
            else
                alert('OK pour envoi');
        }
    }
    Bien sur cette fonction ne marche pas. Rien ne se passe.
    Si quelqu'un à une idée...

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 195
    Points
    195
    Par défaut
    Bonjour,

    Ta fonction JS comporte quelques erreurs :
    - À la ligne 4 : "lenght" n'est pas une propriété valide... "length", si !
    - À la ligne 6 : l'appel correct du style de "display" sur ton élément ne s'écrit pas mais

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Pourquoi n'utiliserais-tu pas le DOM, en bouclant sur les éléments de formulaire, jusqu'a trouver un div et verifier si ca class est "error" ou non ? Quelque chose comme !

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var parentNode = "DeleteRecordFieldset";
    var noeud = document.getElementById(parentNode);
    var fils = noeud.childNodes;
    for(var i = 0; i < fils.length; i++){
     if(fils[i].nodeType==1 && fils[i].className == 'error'){
       //Action si error class
     ) else {
    // Action pas error classe 
     }

    Ceci etant dit je ne sais pas si on peut boucler sur un Fieldset, à essayer !

  4. #4
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par MonsieurSmith Voir le message
    Bonjour,

    Ta fonction JS comporte quelques erreurs :
    - À la ligne 4 : "lenght" n'est pas une propriété valide... "length", si !
    - À la ligne 6 : l'appel correct du style de "display" sur ton élément ne s'écrit pas mais
    En effet, je l'ai fait un peut trop rapidement... Cela dit, ça ne règle pas mon problème...
    Citation Envoyé par OnaStick Voir le message
    Pourquoi n'utiliserais-tu pas le DOM, en bouclant sur les éléments de formulaire, jusqu'a trouver un div et verifier si ca class est "error" ou non ?
    Par ce que je ne connaissait pas cette fonction.
    Citation Envoyé par OnaStick Voir le message
    Ceci etant dit je ne sais pas si on peut boucler sur un Fieldset, à essayer !
    Oui oui on peut, cela fonctionne !

    En revanche, je n'arrive pas à récupérer l'information concernant le display...
    J'ai mis ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function SubmitVerification(id)
    {
    	alert('submit');
    	var parentNode = id + 'Fieldset';
    	var noeud = document.getElementById(parentNode);
    	var fils = noeud.childNodes;
    	for(var i = 0; i < fils.length; i++){
    		if(fils[i].nodeType==1 && fils[i].className == 'error')
    		{
    			alert(fils[i].style.display)
    		} 
    	}
    }
    J'ai un message box vide pour chacune de mes div...
    En revanche si je met dans le html le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="table_error" class="error" style="display:none">
    Alors le script m'affiche bien le none...
    Une idée pour que je puisse éviter de mettre le css dans le code html ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Essaye avec ceci :

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function SubmitVerification(id)
    {
    	alert('submit');
    	var parentNode = id + 'Fieldset';
    	var noeud = document.getElementById(parentNode);
    	var fils = noeud.childNodes;
    	for(var i = 0; i < fils.length; i++){
    		if(fils[i].nodeType==1 && fils[i].className == 'error')
    		{
    			alert(document.getElementById(fils[i].id).style.display);
    		} 
    	}
    }

    Et pour faire propre, tu peux faire :

    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
     
    function SubmitVerification(id)
    {
    	alert('submit');
    	var parentNode = id + 'Fieldset';
    	var noeud = document.getElementById(parentNode);
    	var fils = noeud.childNodes;
    	for(var i = 0; i < fils.length; i++){
    		if(fils[i].nodeType==1 && fils[i].className == 'error')
    		{
    			elem = document.getElementById(fils[i].id);
                            alert(elem.style.dysplay);
    		} 
    	}
    }

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2008
    Messages : 73
    Points : 195
    Points
    195
    Par défaut
    ?? Quel est l'intérêt de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(fils[i].id)
    à la place de ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 29
    Points : 15
    Points
    15
    Par défaut
    Ca, il faut demander au developpeur de navigateur, j'ai remarqué que suivant la syntaxe utilisé, certains code pouvait ne pas fonctionner sur certains navigateur.

    Après hein...

  8. #8
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Toujours le même résultat...

    EDIT : Fonctionne sous FF 6.0, pas sous IE 7/8/9 ni sous Chrome...

Discussions similaires

  1. Pas de DIV dans un FORM ?
    Par electroremy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 11/04/2011, 16h45
  2. [VB6] [Excel] Feuille dans une form, sans excel installé
    Par ro2v dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 05/05/2010, 12h45
  3. Div invisible -> un vide dans mon form
    Par rad_hass dans le forum ASP.NET
    Réponses: 7
    Dernier message: 19/09/2008, 12h02
  4. Comment mettre le même TMainMenu dans plusieurs Form ?
    Par gmc dans le forum Composants VCL
    Réponses: 6
    Dernier message: 12/08/2004, 21h03
  5. [servlet][formulaire] utilisation de 2 servlet dans 1 form
    Par luc_pichot dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/05/2004, 17h55

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