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

Struts 2 Java Discussion :

Comment activer/desactiver des champs de la page en fonction du choix d'un radio


Sujet :

Struts 2 Java

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut Comment activer/desactiver des champs de la page en fonction du choix d'un radio
    Bonjour,

    Alors voila jai dans ma page trois radio boutons definit comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:radio name="user" label="Type of user" list="#{1:'Student', 2:'Staff', 3:'External actor'}"/>
    et j'aimerais en fonction du choix de radio selectionne ('Student' ou 'Staff' ou 'External actor') activer ou desactiver (parametre disable a true ou false) certains champs.

    Exemple :

    Si je selectionne 'Student' alors en dessous j'ai un textfield qui s'active (disable="false") et qui correspond a son numero d'etudiant.

    Ce champ aurait pour code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:textfield name="hemis" label="HEMIS number" disable="false"/>
    Voila, je ne sais pas comment interagir avec mes tags en fonction du choix de mon tag radio. J'ai regarde du cote des <s:if> mais sans succes .

    Voila, merci du temps que vous voudrez bien me consacrer

    Andreas

  2. #2
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    Si tu n'es pas allergique au javascript, tu peux peut être faire qqch comme ca:

    Javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function doDisabled() {
        //Tester le radioboutton selectionné, et agir en conséquence
        //juste un exemple qui marche pour désactiver les boutons
        for (var i = 1; i<=20; i++) {
            if (document.getElementById('MesBoutons'+i)) {
                document.getElementById('MesBoutons'+i).disabled = true;
            }
        }
    }
     
    function undoDisabled() {
       //Ce qu'il faut faire pour reactiver les composants
    }
    Tes boutons en jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <input id="MesBoutons1" type="submit" value="Enregistrer" onclick="monAction"/>
    ou
    <s:submit id="MesBoutons1" value="Enregistrer" />
    Par contre, pour savoir quel radio est selectionné, peut etre voir du coté de OnChange de ton <s:radio>?

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    Bonjour,

    J'ai teste ta solution et ca fonctionne super bien merci !

    Cependant, j'ai un probleme lorsque je veux recupere lequel des radio buttons est selectionne pour agir en consequence. Je n'arrive pas a recuperer de mon parametre "list" de mon radio button lequel est selectionne.

    Je me suis inspire de ta solution pour faire une fonction javascript de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                function doDis() {
                    //Tester le radioboutton selectionné, et agir en conséquence
                    //juste un exemple qui marche pour désactiver les boutons
                    var choix = document.getElementById('radiolist').selectedIndex;
                    switch (choix) {
                        case 0:document.getElementById('but1').disabled = true;break;
                        case 1:document.getElementById('but1').disabled = true;break;
                    }
     
                }
    Sachant que les champs en question sont ecrits comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <s:radio id="radiolist" name="user" label="Type of user" list="#{1:'Student', 2:'Staff', 3:'External actor'}" onclick="javascript:doDis()"/>
     
    <s:textfield id="but1" name="hemis" label="HEMIS number" />
    Mais ce ne fonctionne pas (J'ai essaye avec onchange et onclick a chaque fois pour le radio)

    J'ai egalement essaye des variantes du style var choix = document.getElementById('radiolist').list.selectedIndex; mais sans succes.

    Aurais-tu une idée ?

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    Bon j'ai trouve quelque chose qui marche en partie :

    J'utilise cette fonction javascript :

    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
     
    function doDis1() {
                    //Tester le radioboutton selectionné, et agir en conséquence
                    //juste un exemple qui marche pour désactiver les boutons
                    var choix = document.getElementById('gr').value;
                    switch (choix) {
                        case 'a':
                            document.getElementById('but1').disabled = false;
                            document.getElementById('but2').disabled = true;
                            document.getElementById('but3').disabled = true;
                            document.getElementById('but4').disabled = true;
                            document.getElementById('but5').disabled = true;
                            break;
                        case 'b':
                            document.getElementById('but1').disabled = true;
                            document.getElementById('but2').disabled = true;
                            document.getElementById('but3').disabled = true;
                            document.getElementById('but4').disabled = true;
                            document.getElementById('but5').disabled = true;
                            break;
                        case 'c':
                            document.getElementById('but1').disabled = true;
                            document.getElementById('but2').disabled = false;
                            document.getElementById('but3').disabled = false;
                            document.getElementById('but4').disabled = false;
                            document.getElementById('but5').disabled = false;
                            break;
                    }
    }
    avec les radios definis en pure html (pas de struts) comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <input type="radio" id="gr" name="gr" value="a" onclick="javascript:doDis1()">Student</input>
                <input type="radio" id="gr" name="gr" value="b" onclick="javascript:doDis1()">Staff</input>
                <input type="radio" id="gr" name="gr" value="c" onclick="javascript:doDis1()">External actor</input>
     
                <s:textfield id="but1" name="hemis" label="HEMIS number" />
                <s:textfield id="but2" name="organisation" label="Organisation name" />
                <s:textfield id="but3" name="address" label="Postal address" />
                <s:textfield id="but4" name="postcode" label="Post code" />
                <s:textarea id="but5" name="description" label="Description of the activity of the organisation" cols="30" rows="8" />
    Cependant voila, ca marche mais ca execute tout le temps le cas 'a', je peux cliquer sur n'importe lequel des radio ca fera tout le temps le cas 'a' ce qui est pas logique car on voit bien que je les traite differement ??

    Donc ca je comprend pas

  5. #5
    Membre habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    Ceci semble fonctionner, en suivant ta première idée.

    Javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function doDis() {
        if (document.getElementById('radiolist1').checked==true) {
            document.getElementById('but1').disabled = true;
        }
       if (document.getElementById('radiolist2').checked==true) {
            document.getElementById('but1').disabled = false;
        }       
       if (document.getElementById('radiolist3').checked==true) {
            //Autre action
        }  
    }
    Jsp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            <s:radio id="radiolist" name="user" label="Type of user" list="#{1:'Student', 2:'Staff', 3:'External actor'}" onchange="javascript:doDis()"/>      
            <s:textfield id="but1" name="hemis" label="HEMIS number" />
    Bon courrage

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    167
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 167
    Points : 85
    Points
    85
    Par défaut
    Alors la grand bravo !

    Ca marche nikel maintenant .

    En fait le truc que je ne savais pas est qu'apparement il ajoute le numero de mon element de la liste derriere mon id, ce qui me permet ainsi de traiter chaque radio separement.

    Merci beaucoup ++

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 20/08/2010, 18h28
  2. Réponses: 3
    Dernier message: 20/08/2010, 17h01
  3. Activer ou desactiver des champs
    Par Tsatogua dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/11/2007, 14h07
  4. Activer/desactiver des controls!
    Par kleenex dans le forum Access
    Réponses: 10
    Dernier message: 11/01/2006, 14h33
  5. [débutant]Desactiver des champs par rapport a un select
    Par Pymm dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/02/2005, 16h24

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