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 :

Renvoyer le champ d'un texte si un bouton radio est coché


Sujet :

JavaScript

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

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Points : 18
    Points
    18
    Par défaut Renvoyer le champ d'un texte si un bouton radio est coché
    Bonjour,
    Je veux donner à l'utilisateur le choix entre qq boutons radios, et si aucune réponse ne convient, qu'il saisisse lui même la réponse.


    Voilà le code php que j'utilise, mais qui ne marche pas bien sur:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input type="radio" name="reponse" value="choix 1">choix 1;
    <input type="radio" name="reponse" value="choix 2">choix 2;
    <input type="radio" name="reponse" value="choix 3">choix 3;
    <input type="radio" name="reponse" value="<input type="text" name="reponse">";

    J'ai bien conscience que cela ne peut pas fonctionner, rien que pour les 2 name identiques...

    Je pense qu'il faut ici du javascript, mais là...


    HELP!

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Je viens de faire ceci:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="radio" name="reponse" onClick="javascript:document.form.reponse;"><input type="text" name="reponse" >;

    Ca marche, mais un peu trop!
    En fait, cela me renvoie TOUJOURS la valeur mise dans le champ texte, même si j'ai coché un autre de mes boutons radios...

  3. #3
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Donc la discussion est résolue ou pas ?

    À propos de l'attribut name : sur les boutons radio, seul celui qui est coché compte. S'il a un attribut value, alors le contenu de celui-ci sera envoyé au serveur ; sinon, "on" est envoyé.

    Maintenant, quand un autre contrôle a le même name, s'il se trouve après (dans l'ordre du DOM), il va simplement écraser la précédente valeur. C'est ce qui se passe avec ton champ de texte. À mon avis, ce que tu as de mieux à faire est donner un nom différent à ton champ de texte, par exemple :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input type="radio" name="reponse" value="choix 1">choix 1;
    <input type="radio" name="reponse" value="choix 2">choix 2;
    <input type="radio" name="reponse" value="choix 3">choix 3;
    <input type="radio" name="reponse" value="autre"  ><input type="text" name="reponse-autre">
    Ensuite, côté serveur, tu contôles si le paramètre reponse est égal à "autre" et si oui, tu utilises le paramètre reponse-autre. Par exemple en PHP :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ('autre' === $_GET['reponse']) {
       $valeur = $_GET['reponse-autre'];
    }
    ...

    Et avec ça, même pas besoin de JavaScript !

    ***


    Maintenant, essayons de comprendre ce qui se passe avec le code que tu as écrit :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="radio" name="reponse" onClick="javascript:document.form.reponse;">
    Premièrement : un attribut onclick qui commence par "javascript:", ça marche mais seulement par chance : les navigateurs se sont adaptés à cette erreur de syntaxe.

    Ensuite, il y a document.form.reponse;. Ça ne marche pas car document.form n'existe pas. J'imagine que tu voulais utiliser document.forms[0]. Admettons : le moteur JavaScript exécute donc l'instruction document.forms[0].reponse;.

    document.forms[0].reponse est la collection des éléments nommés reponse, c'est donc un objet de type NodeList. Quand tu exécutes un objet, c'est comme quand tu exécutes l'instruction 42; : c'est valide, mais rien ne se passe.

    Si tu veux absolument utiliser JavaScript, je propose cette solution : quand l'utilisateur saisit quelque chose dans le champ de texte, le bouton radio correspondant est automatiquement sélectionné ; ensuite, quand il a fini sa saisie (évènement onchange), le contenu du champ de texte est copié dans l'attribut value du bouton radio.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <input type="radio" id="reponse-autre" name="reponse" value="">
    <input type="text" onfocus="document.getElementById('reponse-autre').checked = true;"
                       onchange="document.getElementById('reponse-autre').value = this.value;">
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 46
    Points : 18
    Points
    18
    Par défaut
    Finalement, j'avais résolu le problème, d'ailleurs en employant ta méthode, sans javascript.

    Je te remercie néanmoins pour ta participation, qui m'éclaire sur ce qui fallait faire en javascript!

    Résolu!

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

Discussions similaires

  1. afficher un champ texte ssi un bouton radio est coché
    Par Invité dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/02/2013, 17h32
  2. afficher champs formulaire en fonction d'un bouton radio
    Par pod1978 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 02/04/2009, 11h50
  3. Zend_form : Intégrer un champ text dans un bouton radio
    Par Devil Shark dans le forum Zend_Form
    Réponses: 2
    Dernier message: 22/10/2008, 17h45
  4. Masquer un champ si un bouton radio est cocher
    Par 12_darte_12 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 22/02/2006, 16h49
  5. [Javascript] Masquer un champ si un bouton radio est cocher
    Par 12_darte_12 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/02/2006, 15h52

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