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
    En attente de confirmation mail
    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
    Points : 314
    Points
    314
    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 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    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
    En attente de confirmation mail
    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
    Points : 314
    Points
    314
    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 expérimenté
    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
    Points : 1 729
    Points
    1 729
    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 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    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
    En attente de confirmation mail
    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
    Points : 314
    Points
    314
    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 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    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
    En attente de confirmation mail
    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
    Points : 314
    Points
    314
    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 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    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 émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    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
    En attente de confirmation mail
    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
    Points : 314
    Points
    314
    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 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
    Citation Envoyé par Matthieu2000
    remplace disabled par readonly
    Y a emmêlage, là, non ?

    A+

  13. #13
    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
    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
    En attente de confirmation mail
    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
    Points : 314
    Points
    314
    Par défaut
    merci, ça marche nickel

    et merci pour votre rapidité...

  15. #15
    En attente de confirmation mail
    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
    Points : 314
    Points
    314
    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 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
    var boutons = document.getElementById(ID);
    Seul IE permet la confusion entre NAME et ID !!

  17. #17
    En attente de confirmation mail
    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
    Points : 314
    Points
    314
    Par défaut
    et je dois faire quoi alors...

  18. #18
    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
    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
    En attente de confirmation mail
    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
    Points : 314
    Points
    314
    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 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
    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