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 : bloquer des zones


Sujet :

JavaScript

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut formulaire : bloquer des zones
    bonjour,

    j'ai un formulaire avec une case à cocher et 3 boutons radio

    ce que je voudrais, c'est de bloqué l'accès aux boutons radio si la case à cochée est cochée => comment faire ?

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <input type="checkbox" onclick="document.getElementById('radiobutton').style.display=(this.checked)?'none':'block'" />
     
    <div id="radiobutton">
       <input type="radio" />
       <input type="radio" />
       <input type="radio" />
    </div>

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    merci,

    mais je ne veux pas qu'ils disparaissent, je veux qu'ils deviennent inselectionnable...

    de plus, la case est cochée par defaut => a l'affichage pour la premiere fois de la page ça ne bloque pas mes radio boutons...

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="checkbox" onclick="document.getElementById('radiobutton').disabled = this.checked;" />

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Ben adapte le code, je t'ai montré la démarche.

    Tu as juste une boucle à faire sur les boutons radio présents dans le div radiobutton et de tous les basculer à disabled ...

    Et pour tester au chargement de ta page tu mets le test également dans le onload du body.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    ok merci

    par contre j'aimerais faire une fonction CacheElement pour que ça soit plus simple à utiliser

    j'ai essayé ça mais ça n'a pas l'air de marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <label><input type="checkbox" name="toto" checked="checked" onclick="CacheElement('element1')" /> Mode Auto</label><br/>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function CacheElement(Nom) 
    			{
    				alert(Nom); 
    				document.getElementById(Nom).style.display=(this.checked)?'none':'block';	
    			}
    PS : desolé, je suis une quiche en javascript...

  7. #7
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function CacheElement(nom){
     
       var boutons = document.getElementById(nom).getElementsByTagName('input');
       for(var i = 0; i <= boutons.length-1; i++){
          boutons[i].disabled = true;
       }
     
    }
    Je ne l'ai pas testé et je l'ai ecrit vite fait, mais je pense qu'il devrait fonctionner, si on admet que la variable "nom" contient l'id du div qui contient les boutons radio.

    Après il te reste juste à faire le test si la case est cochée ou non.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    et comment fait-on pour savoir si la case est coché ?

    j'ai testé ça mais ça ne marche pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function DisableElement(Nom) 
    			{
    				var boutons = document.getElementById(Nom).getElementsByTagName('input');
     
    				for(var i = 0; i <= boutons.length-1; i++)
    				{
    					boutons[i].disabled = (this.checked)?'none':'block';
    				}	
    			}
    => j'ai pas compris a quoi correspond this ...

  9. #9
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Les valeurs de disabled sont true et false, pas none et block ..

    J'avais utilisé this dans le HTML, cela signifiait "cet élément", dans ton code Javascript, ton this ne vaut rien.

  10. #10
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Citation Envoyé par Emcy
    merci,

    mais je ne veux pas qu'ils disparaissent, je veux qu'ils deviennent inselectionnable...
    remplace disabled par readonly

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    readonly ne fonctionne a priori pas (contrairement a disable)

    actuellement ça fonctionne avec cette methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function DisableElement(Nom) 
    			{
    				var boutons = document.getElementById(Nom).getElementsByTagName('input');
     
    				for(var i = 0; i <= boutons.length-1; i++)
    				{
    					boutons[i].disabled = document.Nomformulaire.NomCheckbox.checked;
    				}	
    			}
    => le probleme est qu'il faut rentrer le nom de la checkbox a chaque fois (donc perte de l'utilité d'utiliser une fonction) : comment faire ?

  12. #12
    Expert éminent

    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
    Par défaut
    Citation Envoyé par Matthieu2000
    remplace disabled par readonly
    Y a emmêlage, là, non ?

    A+

  13. #13
    Expert éminent

    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
    Par défaut
    Citation Envoyé par Bisûnûrs
    J'avais utilisé this dans le HTML, cela signifiait "cet élément", dans ton code Javascript, ton this ne vaut rien.
    Dans la fonction effectivement, mais si c'est le paramétre passé, tu récupères l'objet dans la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onQuelqueChose="DisableElement(this);"
    A+

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    merci, ça marche nickel

    et merci pour votre rapidité...

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    plutot que de juste grisé les radioboutons, j'aimerais griser tous les elements qu'il y a dans la div (du texte + des radio boutons)

    j'ai fait cette fonction qui marche très bien sous IE7 mais pas sous firefox : que faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function DisableElement(Nom, CheckBox) 
    			{
    				var boutons = document.getElementById(Nom);
    				boutons.disabled = CheckBox.checked;							
    			}

  16. #16
    Expert éminent

    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var boutons = document.getElementById(ID);
    Seul IE permet la confusion entre NAME et ID !!

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    et je dois faire quoi alors...

  18. #18
    Expert éminent

    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
    Par défaut
    Donner un ID à ta checkbox et le passer en paramètre à la fonction (puisque c'est lui qui est attendu et non le name) ...

    A+

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 249
    Par défaut
    il me semble que tu n'as pas bien compris mon probleme...

    dans ma page j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <div id="GLOBALConf">
    							<p>
    								Data Transfer Rate :<br/>
    								<label><input type="radio" name="debit1" value="0" /> 10 Mbits/s</label><br/>
    								<label><input type="radio" name="debit1" value="1" checked="checked" /> 100 Mbits/s</label>							
    							</p>
     
    							<p>
    								Transmission Mode :<br/>
    								<label><input type="radio" name="duplex1" value="0" /> Half-Duplex</label><br/>
    								<label><input type="radio" name="duplex1" value="1" checked="checked" /> Full-Duplex</label>
    							</p>
     
    						</div>
    lorsque je clic sur une checkbox, je lance le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function DisableElement() 
    			{
    				var myZone = document.getElementById('GLOBALConf');
    				myZone.disabled = true;							
    			}
    => sous IE7, ça me grise ma zone mais pas sous firefox...

  20. #20
    Expert éminent

    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
    Par défaut
    Citation Envoyé par Emcy
    il me semble que tu n'as pas bien compris mon probleme...
    Ben c'est à dire : je fais avec ce que j'ai, à savoir ton code !

    Si il change en off, je suis pas devin.
    L'ID en dur est une mauvaise idée.

    A+

Discussions similaires

  1. [Formulaire] Rechercher des données à l'aide d'une zone de texte
    Par rantanplan81 dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/06/2007, 14h25
  2. Réponses: 11
    Dernier message: 08/06/2007, 16h45
  3. Réponses: 5
    Dernier message: 29/03/2007, 16h52
  4. bloquer des champs de formulaires
    Par reventlov dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/03/2006, 16h33
  5. contrôle des zones de liste dans formulaire
    Par philpaul dans le forum IHM
    Réponses: 4
    Dernier message: 25/11/2005, 23h28

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