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 :

Bouton radio : valeur affichée != valeur interprétée


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut Bouton radio : valeur affichée != valeur interprétée
    Bonjour,

    j'ai un pb qui me plombe depuis ce matin, peut-être qq1 aura déjà rencontré ce truc bizarre :

    J'ai un groupe de boutons radio dans un formulaire. Pour le valider j'ai un INPUT de type "button" qui envoie vers une fonction javascript.

    Lorsque je sélectionne une option et que je valide tout se passe bien.
    Je sélectionne une seconde option, je re-valide, toujours nickel.
    Tout ça pour dire que le code fonctionne très bien...

    Par contre, si je clique à nouveau sur mon bouton de validation sans avoir changé la sélection (ma sélection précédente est toujours bien affichée dans ma page), alors le formulaire sera traité avec comme valeur pour mon radio groupe celle qui apparait en premier dans mon formulaire HTML!
    C'est à dire que ce qui est visible à l'écran n'est pas pris en compte...

    Si qq1 a la moindre idée ou piste...

    Merci d'avance,
    claude-

  2. #2
    Membre éprouvé Avatar de LexWizard
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 101
    Par défaut
    Salut,
    Pourrais-tu nous montrer ton code js ?
    Merci

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut
    qq morceaux de mon code :

    Mon radio groupe est un filtre dans une recherche. La value 'T' testée ci-dessous correspond à "Tous" (aucun filtre).


    Le bouton de validation du formulaire HTML:
    <input type='button' name='Rechercher' id='Rechercher' value='Rechercher maintenant' onClick='javascript:searchPatient(); return false;'><br>

    La fonction de validation (dans un fichier fonction.js):
    function searchPatient(){
    alert (document.getElementById("Filtre").value);
    if ( ((document.search.NOM.value.length)
    + (document.search.PRENOM.value.length)
    + (document.search.IPP.value.length) < 3)
    && (document.getElementById("Filtre").value == 'T')
    ){
    alert ('Pas assez de caractères saisis (3 caractères minimum)');
    document.search.submit();
    }
    }

    NB: l'alert en gras est bien sur un debug et me permet de voir que la sélection du radio groupe est erronée lorsque je valide une seconde fois mon formulaire

    La value == 'T' est utilisée par erreur lors de la seconde validation parce qu'elle apparait en premier dans mon code HTML (j'ai testé ceci en mettant une autre valeur en premier dans mon formulaire).

    J'espère que cela éclairera.

    Merci de ton aide,
    Merci de votre aide,
    claude-

  4. #4
    Membre éprouvé Avatar de LexWizard
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 101
    Par défaut
    l'élement portant l'iD "Filtre" c'est quoi ?
    Tu peux donner aussi ton code html de ton groupe de radio ?

    Pense à la balise CODE pour mettre ton code (le "#").

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut
    Merci de bien vouloir regarder tout ça!

    Pour info :
    - Le formulaire est dans un fichier TEMPLATE alimenté par PHP, d'où les éléments {BlockRecherche.CheckedF2} etc.
    - Le formulaire peut aussi être activé en AJAX (ma page propose un checkbox "recherche à la frappe" qui est désactivé dans le cas que je décris ici), d'où la gestion des évènements "onKeyPress"


    Voici donc mon code HTML dans le formulaire:

    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
    <tr>
    	<td Width=40%><input type='radio' name='Filtre' id='Filtre' value='T' {BlockRecherche.CheckedF1} 
    						onKeyPress='javascript:if(EnterKeyPressed(event)) nextFocus(this);' 
    						onClick='javascript:document.getElementById("Filtre").value="T"; sendData();'>Tous les patients</td>
    	<td Width=60%><input type='radio' name='Filtre' id='Filtre' value='J' {BlockRecherche.CheckedF2} 
    						onKeyPress='javascript:if(EnterKeyPressed(event)) nextFocus(this);' 
    						onClick='javascript:document.getElementById("Filtre").value="J"; sendData();'>Patients du jour</td>
    </tr>
    <tr>
    	<td><input type='radio' name='Filtre' id='Filtre' value='N' {BlockRecherche.CheckedF5} 
    				onKeyPress='javascript:if(EnterKeyPressed(event)) nextFocus(this);' 
    				onClick='javascript:document.getElementById("Filtre").value="N"; sendData();'>Patients non plac&eacute;s</td>
    	<td><input type='radio' name='Filtre' id='Filtre' value='S' {BlockRecherche.CheckedF3} 
    				onKeyPress='javascript:if(EnterKeyPressed(event)) nextFocus(this);' 
    				onClick='javascript:document.getElementById("Filtre").value="S"; sendData();'>Patients de la semaine</td>
    </tr>
    <tr>
    	<td></td>
    	<td><input type='radio' name='Filtre' id='Filtre' value='M' {BlockRecherche.CheckedF4} 
    				onKeyPress='javascript:if(EnterKeyPressed(event)) nextFocus(this);' 
    				onClick='javascript:document.getElementById("Filtre").value="M"; sendData();'>Patients du mois</td>
    </tr>
    Merci encore LexWizard,
    Merci aux autres lecteurs,
    claude-

  6. #6
    Membre éprouvé Avatar de LexWizard
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 101
    Par défaut
    Ok, c'est bien se que je me disais. Tu utilises 'Filtre' comme id pour tous les radio. Or un ID est un identifiant qui DOIT etre unique dans une page.

    Tu garde le name='Filtre' et tu enleve l'ID.
    Ensuite dans ton code pour savoir quel radio est checked tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var elements = document.getElementsByName("Filtre");
        var i = 0;
        for(i; i<elements.length ; i++)
        {
            if(elements[i].checked)
                break;
        }
        alert(elements[i].value)
    l'alert va afficher la valeur du radio qui est "checké". Après tu peux faire le traitement en fonction

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut
    Merci beaucoup LexWizard!!!

    Malheureusement je n'ai pas le temps de tester tout de suite, mais il y a de fortes chances que ce soit çà.
    Je pensais que l'id unique ne s'appliquait pas aux groupes (checkbox et radiobutton)...

    Je checkerai dès demain matin.

    Encore TROP merci pour ton aide!
    claude-

  8. #8
    Membre éprouvé Avatar de LexWizard
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2007
    Messages : 101
    Par défaut
    Attend de voir si ça marche
    J'attend de tes nouvelles

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut
    Petit changement de programme et j'ai finalement pu testé tout de suite...

    ET CA MARCHE !!!!

    C'était une erreur de rookie, mais ça m'enlève une belle épine du pied.

    Je suis pas un fan des emoticons, mais là je dis


    Merci encore,
    claude-

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

Discussions similaires

  1. Combobox, Valeur affichée, Valeur mémorisée
    Par intomyhead dans le forum VB.NET
    Réponses: 8
    Dernier message: 01/11/2012, 23h18
  2. Réponses: 33
    Dernier message: 26/05/2010, 19h09
  3. Afficher la valeur de mon bouton radio
    Par youkisall dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/11/2007, 11h07
  4. Réponses: 1
    Dernier message: 08/06/2007, 09h12
  5. Bouton radio : récupérer la valeur du bouton avec selectedIn
    Par djodjo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/08/2005, 12h07

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