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 :

forcer un radio bouton


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut forcer un radio bouton
    bonjour,

    j'ai cherché dans la doc, mais je ne trouve pas, car je ne suis pas un spécialiste JS.

    je travaille sur une appli qui s'appuie sur Struts (+ une surcouche framework à nous) et je voudrais, dans un cas bien précis, garder un groupe de radio bouton cliquable mais sur l'action onClick, remettre la focus sur l'ancien

    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
    function onCheckCodeCivilite() {
    		var nomMarital = this.document.getElementById("etatCivilForm").elements['nomMarital'];
    		nomMarital.disabled = false;
    		var codeCivilite = this.document.getElementById("etatCivilForm").elements['codeCivilite'];
    		var dossierValiderJS = false;
    		if (etatCivilForm.elements['dossierValider'].value=='true') {
    			dossierValiderJS = true;
    		}
     
    		if (codeCivilite != null) {
    			if (codeCivilite.length != null) {
    				if (dossierValiderJS) {
    					var formulaire = this.document.forms[0];
    					idCivilite = formulaire.elements['codeCivilite'].value ;
    				//	codeCivilite[idCivilite].checked = "true"; // ne marche pas
    					codeCivilite.checked = idCivilite;// ne marche non plus
     
    				} else {	
    					// autre cas fonctionnel				
    				}
     
    			}
    		}
    	}
    par exemple, si j'ai trois radio bouton pour la civilité (M. Mme Mlle), et que à l'arrivée on est sur Mme, au click sur M., je veux remettre le radio bouton sur Mme.

    comment cela est-ce possible ?
    dans mon cas, la var idCivilité contient un entier (4 dans mon exemple, car il y a des champs cachés pour d'autres cas)

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    salut,
    il ne faut pas mettre de " autour des true et false, c'est des booléens comme en java
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par siddh
    il ne faut pas mettre de " autour des true et false, c'est des booléens comme en java
    ok ;-)

    j'ai essayé également sans les ", mais j'ai tjs une erreur JS (au niveau des indices).

    en+, avec le framework, parfois ce sont des booleens, parfois des chaines de caractères (quand on les récupère depuis l'objet formulaire par exemple, le typee Java derrière est String...). C'est pourquoi il faut les " pour cette partie de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
          if (etatCivilForm.elements['dossierValider'].value=='true') {
             dossierValiderJS = true;
          }
    mais merci de me corriger pour les affectations booleen en JS.


    la difficulté, c'est de récupérer la valeur avant le click (sauvegardée par ailleurs dans l'objet Java) puis de la remettre ou il faut. quand je récupère codeCivilité, je récupère un tableau, et non l'indice. je me mélange un peu les pinceaux entre ce tableau et la valeur de l'indice (qui porte le même nom dans l'objet java et que je pensais récupérer avec var codeCivilite = this.document.getElementById("etatCivilForm").elements['codeCivilite']; )

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    bon j'avance :

    1. je sauvegarde l'indice dans une var globale sur l'init de la page
    2. je la restaure sur le onCheck. il faut utiliser onclick() et non checked qui est un attribut en leture seule (parce que si j'essaye de lui attribuer true/false, j'ai une erreur Permission refusée)

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    // var globables
    	var oldCivilite;
     
    	//
    	// fonctions
    	//
     
    	function init() {
    		var codeCivilite = this.document.getElementById("etatCivilForm").elements['codeCivilite'];
    		for (var i=0; i < codeCivilite.length;i++) {
    			if (codeCivilite[i].checked) {
    				oldCivilite = i
    			}
    		}
    	}
     
       function onCheckCodeCivilite() {
    		var nomMarital = this.document.getElementById("etatCivilForm").elements['nomMarital'];
    		nomMarital.disabled = false;
    		var codeCivilite = this.document.getElementById("etatCivilForm").elements['codeCivilite'];
    		var dossierValiderJS = false;
    		if (etatCivilForm.elements['dossierValider'].value=='true') {
    			dossierValiderJS = true;
    		}
     
    		if (codeCivilite != null) {
    			if (codeCivilite.length != null) {
    				if (dossierValiderJS) {
     
    					codeCivilite[oldCivilite].click();
     
    				} else {	
    					// autre cas fonctionnel - ca marche
    				}
     
    			}
    		}
    	}
    bon, j'y suis arrivé tout seul (1/2 journée....), mais merci pour la réponse qui m'a permis d'éviter d'autres erreurs

    je poste ici pour "la postérité" ;-). si ca peut aider...

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    essayes un truc comme ça,
    quand la page est chargée, tu garde la ref vers le radio coché et quand y a un click, tu le remet
    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
    <script type='text/javascript'>
    	var index;
    	var radios;
     
    	function onCheckCodeCivilite(){
    		radios[index].checked = true;
    	}
     
    	window.onload = function(){
    		radios = document.getElementsByName("toto");
    		var notFound = true;
    		var i=0;
    		while(i<radios.length && notFound){
    			if(radios[i].checked){
    				index = i;
    				notFound = false;
    			}
    			i++;
    		}
    	}
    </script>
    <input type="radio" name="toto" value="1" onclick="onCheckCodeCivilite()" />1<br />
    <input type="radio" name="toto" value="2" onclick="onCheckCodeCivilite()" />2<br />
    <input type="radio" name="toto" value="3" onclick="onCheckCodeCivilite()" checked="checked" />3<br />
    <input type="radio" name="toto" value="4" onclick="onCheckCodeCivilite()" />4<br />
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  6. #6
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par siddh
    essayes un truc comme ça,
    quand la page est chargée, tu garde la ref vers le radio coché et quand y a un click, tu le remet
    oui, c'est exactement ce que j'ai fait ! (comme quoi, les grands esprits...)
    par contre, checked est un attribut en lecture seule j'ai l'impression, on ne peut pas (pour les radio bouton) le forcer à true ou false :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          radios[index].checked = true;
    on se prend une erreu JS du genre "intedit de faire cela" (j'ai oublié)

    il faut faire :

  7. #7
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    Citation Envoyé par jcaruana
    par contre, checked est un attribut en lecture seule j'ai l'impression, on ne peut pas (pour les radio bouton) le forcer à true ou false :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          radios[index].checked = true;
    on se prend une erreu JS du genre "intedit de faire cela" (j'ai oublié)

    il faut faire :
    quel navigateur ?
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  8. #8
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    IE :-(

    mais c'est dans Struts + Struts Layout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
               <layout:radios property="codeCivilite" isRequired="true" layout="false" cols="4" styleClass="formLibelle" mode="E,E,R" onclick="onCheckCodeCivilite();">
                <layout:optionsCollection property="choixCiviliteList" label="libelleCourtCivilite" value="codeCivilite"></layout:optionsCollection>
               </layout:radios>
    qui donne qqch du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="radio" name="codeCivilite" value="3" onclick="onCheckCodeCivilite();" checked><span class="formLibelle">M</span></td><td><input type="radio" name="codeCivilite" value="4" onclick="onCheckCodeCivilite();"><span class="formLibelle">Mme</span></td><td><input type="radio" name="codeCivilite" value="5" onclick="onCheckCodeCivilite();"><span class="formLibelle">Mlle</span>

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    c est etrange car mon code marche dans ie
    mais si ça marche avec click() c'est le principal
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

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

Discussions similaires

  1. Forcer la valeur d'un radio bouton
    Par lthibert dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/11/2006, 15h29
  2. radio bouton
    Par MANU_2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/09/2005, 11h22
  3. probleme avec les radio bouton
    Par zola dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/06/2005, 09h52
  4. Récupérer la valeur d'un radio bouton
    Par Batizme dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/01/2005, 11h33
  5. Radio-boutons
    Par akaii dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2004, 10h44

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