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 :

Champ required sur un champ "caché"


Sujet :

JavaScript

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2018
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 145
    Points : 74
    Points
    74
    Par défaut Champ required sur un champ "caché"
    Bonjour,

    Pour l'instant j'ai ceci...
    Mon but est que le champ text "precision_lieu" soit obligatoire si l'option "Autre" est choisie. Cependant, les 2 méthodes que j'ai testées ne fonctionnent pas...

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <form action="" method="post" onsubmit="return validateForm()" name="formulaire">    <!-- onsubmit et name pour la méthode 2 -->
    <select name="lieu" onchange="champLieu(this);">
        <option value="Lieu1">Lieu1</option>
        <option value="Lieu2">Lieu2</option>
        <option value="Autre">Autre</option>
    </select>
              <div id="siAutre" style="display: none;">
                <label for="precision_lieu"></label> <input type="text" name="precision_lieu" id="idLieu" placeholder="Préciser"/>
              </div>
    </form>

    Code JavaScript : 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
    function champLieu(that) {
        if (that.value == "Autre") {
            document.getElementById("siAutre").style.display = "block";
    	document.getElementById("idLieu").required = true;
        } else {
            document.getElementById("siAutre").style.display = "none";
    	document.getElementById("idLieu").required = false;
        }
    }
     
    //méthode 2 (donc c'est soit l'une, soit l'autre, pas les 2 en même temps)
    function validateForm() {
    	if(document.getElementById("siOui").style.display == "block"){
    		let x = document.forms["formulaire"]["precision_lieu"].value;
    		if (x == "") {
    			alert("Le champ 'Autre' doit être complété.");
    			return false;
    		}
    	}
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    dans ton ton de select tu as
    Mais dans ta fonction tu testes
    Pas étonnant que cela ne passe jamais dans le if

  3. #3
    Membre régulier
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2018
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2018
    Messages : 145
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Malheureusement, le problème ne vient pas de là, j'ai juste mal renoté le code... Désolé

    (Le vrai code est en php, pour simplifier les choses je l'ai mis en HTML ici, sinon ça donne ça : )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <select name="lieu" onchange="champLieu(this);">
    <?php
         $reqLieux = $bdd->prepare('SELECT * FROM lieux');
         $reqLieux->execute();
     
         while ($donnees = $reqLieux->fetch()) {
           echo '<option value="'.$donnees['libelle_lieu'].'">' . $donnees['libelle_lieu'] . '</option>';
         }
    ?>
     
    </select>
    Mais quand je regarde dans le code source de la page, j'ai bien

  4. #4
    Membre régulier Avatar de tag9724
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2021
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2021
    Messages : 64
    Points : 113
    Points
    113
    Par défaut
    De ce que j'ai testé les deux méthodes fonctionnent très bien, enfin la seconde fonctionne quand on remplace le .getElementById("siOui") par .getElementById("siAutre").

Discussions similaires

  1. Remplir un champs TEXT caché avec une fonction on change sur une liste déroulante
    Par tang le breton dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/11/2009, 11h04
  2. [Validator] required sur 2 champs et/ou
    Par Tanebisse dans le forum Struts 1
    Réponses: 6
    Dernier message: 29/04/2008, 14h44
  3. [JTable] avoir un champ (colonne) caché
    Par koolway dans le forum Composants
    Réponses: 8
    Dernier message: 24/04/2006, 16h04
  4. Réponses: 2
    Dernier message: 15/04/2006, 17h50

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