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 :

[js-php]Desctiver un champs en fonction d'une liste


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut [js-php]Desctiver un champs en fonction d'une liste
    Bonjour,

    J'ai une liste déroulante. Si l'utilisateur ne trouve pas son choix dans cette liste, il doit l'écrire dans un champs texte.
    Et je voudrais que ce champs texte ne soit accessible que si l'utilisateur n'a rien choisit dans la liste déroulante.
    Est-ce que quelqu'un pourrait me dire comme faire cela.

    Merci

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    A priori, un contrôle du style :

    if (monSelect.selectedIndex = -1){monChampText.visibility="visible"}
    else{monChampText.visibility="hidden"}
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 110
    Points : 68
    Points
    68
    Par défaut
    Salut,

    Donne un id à ton champ de texte comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <input type="text" name="nom_du_champ" id="champ_custom" value="" />
    <select name="nom_du_select" onchange="activer_input(this)">
    <option value="">Selectionnez</option>
    <option .....</option>
    </select>
    Crée une fonction javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function activer_input(s){
    var mdv = s.options[s.selectedIndex].value;
    document.getElementById('champ_custom').disabled = (mdv==="") ? false : true; 
    }
    Voila en gros pour le cheminement.

    ++

  4. #4
    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
    Un peu trop généreux sur ce coup
    ==>EDIT : d'ailleurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('champ_custom').disabled = (mdv=="");
    devrait être suffisant ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Merci pour cos réponse.
    J'ai essayé comme suit, mais ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function activer_input(s)
    {
    var mdv = s.options[s.selectedIndex].value;
    document.getElementById('champ_custom').disabled = valeurListe=="");
    }
    Ma liste déroulante provient d'une base de données ACCESS, J'ai fait comme cela,

    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
     
    <?php
    //connexion à la base
    ....
     
    $query2= odbc_exec($connexion, "SELECT DISTINCT institution FROM equipe;") or die (odbc_error());
     
    print "<b>Institution de provenance : </b>";
    if ($query2) 
    {		
    print '<select name="instit" onChange="activer_input(this)">';
    print '<option value="" selected>' . "" . '</option>'; 
    while ($array = odbc_fetch_array($query2))
    {
    if ($_SESSION['instit'] == $array['institution']) 
    {
    print "<option selected>".$_SESSION['instit']."</option>";
    }
    else
    {
    print '<option value="' . $array['institution'] . '">' . $array['institution']. '</option>'; 
    }		       
    }
    print '</select>';   
    }
     
    ?>	
     
    Si institution pas dans la liste Saisissez :
    <input type="text" name="institu" id="champ_custom" size='20' maxlength='30' value="<? print($_SESSION['institu']);?>">
    Mais si je ne selectionne rien dans la liste, mon champs texte est toujours accessible.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    il y a un petit oubli,

    J'ai oublié ma ValeurListe mais même comme ça, ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    function activer_input(instit)
    		{
    			var mdv = instit.options[instit.selectedIndex].value;
    			document.getElementById('champ_custom').disabled = mdv=="");
    		}

  7. #7
    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
    Il manque une parenthèse, là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('champ_custom').disabled = (mdv=="");
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Même aprs ajout de la parenthese, ça ne le fait pas encore!!

  9. #9
    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 maraly Voir le message
    Même aprs ajout de la parenthese, ça ne le fait pas encore!!
    On peut voir le code généré (celui pris dans le nav : sans PHP) ?

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //fonction qui ne permet l'acces aux cases texte que si on n'a rien choisit dans la liste
    		function activer_input(s)
    		{
    			var mdv = s.options[s.selectedIndex].value;
    			document.getElementById('champ_custom').disabled = (mdv=="");
    		}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <b>Institution de provenance : </b><select name="instit" onChange="activer_input(this)"><option value="" selected></option><option value="CUIRE">CUIRE</option><option value="CENTRE-LEON-BERARD">CENTRE-LEON-BERARD</option><option value="UMG">UMG</option><option value="SAINT-JOSEPH">SAINT-JOSEPH</option><option value="CHLS">CHLS</option><option value="CROIX-ROUSSE">CROIX-ROUSSE</option><option value="CHARPENNES">CHARPENNES</option><option value="CLINIQUE-JEANNE-D-ARC">CLINIQUE-JEANNE-D-ARC</option><option value="CHARIAL">CHARIAL</option><option value="MAISON-DE-RETRAITE-LA-CHRISTIMONE">MAISON-DE-RETRAITE-LA-CHRISTIMONE</option><option value="HERRIOT">HERRIOT</option></select>
     
    				<input type="text" name="institu" id="champ_custom" size='20' maxlength='30' value="">

  11. #11
    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
    Très étonnant : chez moi ça fonctionne sous IE6 et Firefox

    Tu as remarqué que pour voir la désactivation de l'input (sous IE), il faut avoir saisi du texte avant ?
    De plus il faut d'abord avoir fait un autre choix dans la liste (puisque celui-ci est selected par défaut) pour déclencher le onchange ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    ah, ça marche, mais dans l'autre sens!
    c'est à dire que je n'ai pas acces à la case si je n'ai rien selectionné, et j'y ai accès en ayant selectionné dans la liste.
    Je vais revoir

    Merci à tous

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    C'est bon, avec
    document.getElementById('champ_custom').disabled = (mdv!=="");

    J'ai dû mal expliqué au départ.

    Merciii

  14. #14
    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 maraly Voir le message
    J'ai dû mal expliqué au départ.
    Ca doit être ça
    Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('champ_custom').disabled = (mdv!="");
    Quelle abondance de "=" dans cette discussion ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 110
    Points : 68
    Points
    68
    Par défaut
    Salut,

    Vu qu'on sait que le type de la var est une chaine , pourquoi es tu contre l'utilsation de === ?

    ++

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

Discussions similaires

  1. Cacher un champs en fonction d'une liste déroulante
    Par mlle.asmae dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/07/2015, 19h54
  2. [WD15] alimentation d'un champ en fonction d'une liste
    Par fr832 dans le forum WinDev
    Réponses: 7
    Dernier message: 24/12/2011, 11h20
  3. [AJAX] Remplir des champs en fonction d'une list
    Par efrbeldin dans le forum AJAX
    Réponses: 7
    Dernier message: 17/01/2011, 17h06
  4. [AC-2007] Actualisation des champs en fonction d'une liste déroulante
    Par cool17 dans le forum IHM
    Réponses: 2
    Dernier message: 05/04/2010, 20h31
  5. mise à jour de champs en fonction d'une liste déroulante
    Par kifouillou dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 09/04/2008, 16h37

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