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 :

JS: Connaître le type d'un champ HTML via son nom


Sujet :

JavaScript

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 85
    Points : 52
    Points
    52
    Par défaut JS: Connaître le type d'un champ HTML via son nom
    Bonjour,

    tout (ou presque) est dans le titre
    Savez-vous s'il y a moyen de connaître le type d'un champ HTML grâce au nom de ce champ

    exemple purement fictif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function type(nom_champ){
         var typ = typeof(getElementByName(nom_champ));
         if (typ == "radio"){
            ...
         }
         if (typ == "text"){
            ...
         }
         if (typ == "select"){
            ...
         }
    }

    Vous voyez ce que je veux dire ?

    Merci beaucoup pour votre aide !

  2. #2
    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
    bonjour,

    je dirais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     var typ = getElementByName(nom_champ).type.toLowerCase();
    Normalement typ =
    button
    text
    hidden
    textarea
    radio
    checkbox
    etc...

  3. #3
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Auteur
    bonjour,

    je dirais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     var typ = getElementByName(nom_champ).type.toLowerCase();
    Ben moi, je dirais plutot:
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     var typ = getElementsByName(nom_champ)[0].tagName.toLowerCase();

    Je connais pas getElementByName, mais juste getElementsByName, ce qui oblige à prendre le premier du vecteur retourné. Ensuite, c'est tagName plutot que type. Et il faudrait faire un peu plus attention aux null dans cette histoire....

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Attention, vous confondez tagName et type...

    soit node = <input type="hidden" />
    tagName = "input"
    type = "hidden"

    soit node = <select></select>
    tagName = "select"
    type = null
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  5. #5
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    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
    var node;
    switch (node.tagName.toLowerCase()) {
        case "input":
            switch (node.type) {
                 case null:
                 case "":
                 case "text":
                      // ...
                 break;
                 case "radio":
                     // ...
                 break;
                  // autres types
            }
        break;
        case "select":
             // ...
        break;
    }
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 85
    Points : 52
    Points
    52
    Par défaut
    Youhouuu

    Bhein je crois qu'avec tout ça je m'en sortirai !!

    Merci beaucoup à vous !


    NikoBe

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 85
    Points : 52
    Points
    52
    Par défaut
    Bhein flute, IE n'a pas l'air de supporter ces fonctions !!
    c'est normal ?
    commen peut-on connaître les compatibilités ?

  8. #8
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Normalement ca devrait marcher sur IE aussi.

    Qu'est-ce qui ne vas pas exactement ?
    Tu peux donner ton code ?
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  9. #9
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 85
    Points : 52
    Points
    52
    Par défaut
    Bhein.. héhé.. j'ai repris ton code

    mais dans le contexte, ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <form method=POST ACTION="mapage2.html" name="mapage1.html" onsubmit="return verifpage()">
    ...
    <input type="text" ..
    <select ..
    ...
    <form>
    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
     
    function verifpage(){
    ...
    var type = type_of_field(nom_champ);
    ...
    }
     
    function type_of_field(nom_champ){
     
    var tag = getElementsByName(nom_champ)[0].tagName.toLowerCase();
    window.alert("tag = " + tag);
    var typ = getElementsByName(nom_champ)[0].type.toLowerCase();
    window.alert("typ = " + typ);
     
    var node = getElementsByName(nom_champ)[0];
     
       switch (node.tagName.toLowerCase()) {
           case "input":
                  return node.type.toLowerCase();
           break;
           case "select":
                  return node.tagName.toLowerCase();
           break;
       }
    }
    au fait, ça plante déjà dès la première affectation de la fonction type_of_field (càd var tag = getElementsByName(nom_champ)[0].tagName.toLowerCase()).
    J'ai même pas le display qui suit.
    Et le comportement est assez bizarre, au fait ça exécute l'action de ma <form> (à savoir que ça va directement à 'mapage2.html')

    précision: j'ai vérifié, la variable 'nom_champ' contient bien le nom d'un champ (d'ailleurs ça marche pour d'autres traitements avec la même variable)

    ya qqch qui m'échappe ..

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2003
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 85
    Points : 52
    Points
    52
    Par défaut
    Ca marche beaucoup mieux en faisant :

    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
    function type_of_field(nom_champ){
     
    var tag = document.getElementsByName(nom_champ)[0].tagName.toLowerCase();
    window.alert("tag = " + tag);
    var typ = document.getElementsByName(nom_champ)[0].type.toLowerCase();
    window.alert("typ = " + typ);
     
    var node = document.getElementsByName(nom_champ)[0];
     
       switch (node.tagName.toLowerCase()) {
           case "input":
    
    ...
    
    }

    je sais pas trop pourquoi, mais ça marche !
    (je maîtrise pas encore tout hein )

    Merci à vous,
    En espérant que ça puisse servir

    NikoBe

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    getElement = va chercher élément ...
    si tu ne lui dit pas où aller le chercher ... sur le document par exemple ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. [WD15] Fonction suivant/précédent dans champ html via une base
    Par squall049 dans le forum WinDev
    Réponses: 10
    Dernier message: 14/01/2013, 10h09
  2. [AC-2003] Connaître le type d'un champ d'une table
    Par Shankara dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/08/2009, 18h23
  3. [VB.NET] Récupération champ BD par son nom
    Par jojo-la-praline dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/04/2006, 08h21
  4. connaitre les propriétés d'un champ à partir de son nom
    Par toome dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 24/10/2005, 11h16
  5. Connaître le type d'un champs d'une table Mysql
    Par xoran dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/07/2005, 09h29

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