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 :

Formulaire et javascript : radio et select interdépendants


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 31
    Points : 13
    Points
    13
    Par défaut Formulaire et javascript : radio et select interdépendants
    Bonjour,

    Je suis complètement débutant en javascript. J'ai lu quelques tutoriaux, mais seulement, vous l'avez deviné, j'ai un petit soucis avec la mise en pratique.

    En fait, mon problème est le suivant :
    j'ai deux listes SELECT, que je voudrais griser en fonction de boutons radio.
    En gros, si le premier radio est checké, la deuxième liste est déactivée, et si c'est le second, la première liste est grisée.
    J'avais donc inséré l'option onFocus="document.forms[0].liste1.disabled='TRUE'" pour désactiver mes listes SELECT (j'avais mis ça dans les balises des boutons radio)
    Mon problème est de les ré-activer.
    J'ai essayé avec onBlur="document.forms[0].liste1.disabled='FALSE'", sans succès.

    Second problème, lorsque je charge ma page, un bouton radio est sélectionné par défaut (le n° du bouton est stocké avec PHP). Est-il possible de griser la liste correspondante au chargement de la page ?

    Merci de vos réponses.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Touche à tout informatique autodidacte
    Inscrit en
    Janvier 2007
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Touche à tout informatique autodidacte

    Informations forums :
    Inscription : Janvier 2007
    Messages : 808
    Points : 912
    Points
    912
    Par défaut
    Bonjour,
    il serait plus adéquat d'écrire
    onFocus="document.forms[0].liste1.disabled=true"

    et pour réactiver
    onFocus="document.forms[0].liste1.disabled=false"

    Le fait de les mettre 1. En majuscules 2. entre '' fausse la donne et envoi true systématiquement.

    Pour ta deuxième question, une p'tite astuce :
    En supposant que $var soit la variable qui contienne le numéro de la liste à désactiver.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <select name="pre" <?if($var==1) {echo 'DISABLED';}>
             <option..
              .....
              .....
    </select>
    <select name="deux" <?if($var==2) {echo 'DISABLED';}>
             <option..
              .....
              .....
    </select>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 31
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup kabkab !
    Mon formulaire a déjà plus de gueule !

    Dernier soucis : j'ai un pote qui a un mac, et sous safari...ça ne passe pas : les options ne se dégrisent pas.
    Des idées sur l'origine du problème ?

    Merci encore.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par kabkab Voir le message
    il serait plus adéquat d'écrire
    onFocus="document.forms[0].liste1.disabled=true"

    et pour réactiver
    onFocus="document.forms[0].liste1.disabled=false"
    + pour le true/false

    Par contre, pour éviter les problèmes de compatibilité, utilise plutôt les id pour accéder aux éléments de la page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select id="pre" name="pre" <?if($var==1) {echo 'DISABLED';}>
    puis tu pourras faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onfocus="document.getElementById('pre').disabled=true;"
    Les noms des évènements sont toujours en minuscules (comme toute propriété HTML) ...

    EDIT : par contre, attention : contrairement au name l'id doit être unique dans la page ...

    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 31
    Points : 13
    Points
    13
    Par défaut
    Salut !

    J'ai modifié en remplaçant les forms[0].nomduchamp par getElementById['idduchamp'], seulement, ça ne change rien au problème de mon pote...

    D'autres idées ?

    Merci.

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    getElementById['idduchamp']
    Citation Envoyé par Warno Voir le message
    D'autres idées ?
    Une autre, oui : remplace les [] par des () ...

    A+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 31
    Points : 13
    Points
    13
    Par défaut
    Autant pour moi ! J'ai bien écris avec des parenthèses dans mon code.
    Le problème ne se trouve donc pas là....malheureusement.



    [EDIT] Y a-t-il quelque chose de particulier à faire pour que le javascript soit lu par Safari ?
    En fait, j'ai deux pistes :
    - soit le javascript est mal déclaré (si il y a besoin de le déclarer...) dans ma page
    - soit il y a un soucis avec la fonction onfocus en particulier : en effet, j'ai déjà des pages sur mon site avec du javascript (fonction onmouseover) qui fonctionne sous Safari

    Ah si tout le monde était sous FFx....

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 31
    Points : 13
    Points
    13
    Par défaut
    Au fait, je pense que j'ai trouvé d'où vient le problème.
    En fouinant un peu à droite à gauche, j'ai trouvé la cause de mon problème : le onfocus n'est pas déclenché par le clic de la souris sous Safari !

    Effectivement, lorsque je sélectionne mes entrées avec le clavier, les champs se dégrisent et se grisent correctement....

    Ma question, vous l'avez deviné : comment remédier à cela ?

    Merci de vos réponses.

    [EDIT] : je crois que j'ai trouvé une solution : remplacer le onfocus par un onchange.
    Ca règle le pb sous safari et FFx.
    Par contre, c'est géré un peu bizarrement sous IE...mais bon.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/07/2009, 10h25
  2. verif de formulaire et boutons radio
    Par Invité dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/02/2006, 22h42
  3. aide formulaire et bouton radio
    Par jarod71 dans le forum IHM
    Réponses: 1
    Dernier message: 01/12/2005, 16h05
  4. Impossible d'envoyer un formulaire avec javascript
    Par Mimi Bulles dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/11/2005, 20h37

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