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 :

Vérification de la valeur d'un champ de formulaire


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 66
    Par défaut Vérification de la valeur d'un champ de formulaire
    Bonsoir à tous

    J'ai deux champs de formulaire que voici:

    Nom : gare.PNG
Affichages : 144
Taille : 5,4 Ko

    Les deux combos m'affichent la liste des gares qui se trouve dans ma base de données et voici leurs différents codes :


    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
    //Combo gare de départ
    <div class="form-group col-xs-5">
    	<select id="" class="form-control" name="garedepart">
    		<option selected>Sélectionner la gare de départ</option>
    			<?php 
                                 $garedepart = $con->query("SELECT * FROM gare ORDER BY IdGare DESC");
                                 while ($donnees2 = $garedepart->fetch()) {
                                            echo '<option value="'.$donnees2['IdGare'].'">'.$donnees2['NomGare'].
                    '</option>';
                                  }                                 
                             ?>	
    	</select>
    </div>
     
     
    //Combo gare d'arrrivée
    <div class="form-group col-xs-5">
    	<select id="" class="form-control" name="garearrivee">
    		<option selected>Sélectionner la gare d'arrivée</option>
    		     <?php 
                                $garedepart = $con->query("SELECT * FROM gare ORDER BY IdGare DESC");
                                while ($donnees2 = $garedepart->fetch()) {
                                            echo '<option value="'.$donnees2['IdGare'].'">'.$donnees2['NomGare'].
                    '</option>';
                                 }                                  
                          ?>			
    	</select>
    </div>
    Je souhaite que lorsque l'utilisateur à sélectionner la gare de départ et que le combo gare d'arrivée prend le focus, la liste des gares qui s'y affichent ne comprennent plus la gare de départ vu qu'elle a déjà été sélectionner.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    le plus ergonomique me semble quand même de disposer de deux listes identiques et de tester avant toutes autres choses que la gare de départ est différente de la gare d'arrivée et si cela est le cas afficher un joli message.

    Mais pourquoi j'écris cela, simplement parce que si tu veux envisager les cas où la gare d'arrivée est choisie avant la gare de départ, on n'est pas dans la tête des internautes pour connaitre leur logique, il va te falloir le gérer également, mais cela est facile mais la première fois seulement.
    Si l'internaute choisi une autre gare de départ alors qu'il a déjà sélectionné une gare d'arrivée il va te falloir mettre à jour la liste gare d'arrivée en restaurant son choix, ceci est également simple mais c'est tous les cas prévisibles qui vont compliquer ta fonction.

  3. #3
    Membre chevronné Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Par défaut
    peut-être que l'idée est de faire ceci:
    Attention, par contre ce choix peut-être faire l'objet d'une modification, il faut donc retenir le noeud à effacer pour le remettre ensuite sur un nouveau choix de gare de départ.
    Code html : 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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <div class="form-group col-xs-5">
    	<select id="garedepart" class="form-control" name="garedepart" onchange="focusAndSuppressOneCoice(this.value);">
    		<option selected>Sélectionner la gare de départ</option>
    			<?php 
                                 $garedepart = $con->query("SELECT * FROM gare ORDER BY IdGare DESC");
                                 while ($donnees2 = $garedepart->fetch()) {
                                            echo '<option value="'.$donnees2['IdGare'].'">'.$donnees2['NomGare'].
                    '</option>';
                                  }                                 
                             ?>	
    	</select>
    </div>
     
     
    //Combo gare d'arrrivée
    <div class="form-group col-xs-5">
    	<select id="garearrivee" class="form-control" name="garearrivee">
    		<option selected>Sélectionner la gare d'arrivée</option>
    		     <?php 
                                $garedepart = $con->query("SELECT * FROM gare ORDER BY IdGare DESC");
                                while ($donnees2 = $garedepart->fetch()) {
                                            echo '<option value="'.$donnees2['IdGare'].'">'.$donnees2['NomGare'].
                    '</option>';
                                 }                                  
                          ?>			
    	</select>
    </div>
    <script type="text/javascript">
    var clone, cloneIndex;
    function focusAndSuppressOneCoice(value) {
          if (clone && !isNaN(cloneIndex)) {
                 document.querySelector("#garearrivee").insertBefore(clone, document.querySelector("#garearrivee").childNodes[cloneIndex]);
          }
          var child=document.querySelector("#garearrivee").querySelector('option[value='+value+']');
          clone=child.cloneNode(false);
          cloneIndex=0;
          while((child = child.previousSibling) != null ) 
                cloneIndex++;
          document.querySelector("#garearrivee").removeChild(child);
          document.querySelector("#garearrivee").focus();
    }
    </script>

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 66
    Par défaut
    01001111

    ça ne marche pas

  5. #5
    Membre chevronné Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Par défaut
    dsl, deux erreurs:
    option[value=...] doit comprendre des guillemets

    et il faut copier l'élément child avant de chercher son index

    code:
    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
     
    var clone, cloneIndex;
    function focusAndSuppressOneCoice(value) {
          	if (clone && !isNaN(cloneIndex)) {
                	document.querySelector("#garearrivee").insertBefore(clone, document.querySelector("#garearrivee").childNodes[cloneIndex]);
          	}
          	var child=document.querySelector("#garearrivee").querySelector('option[value="'+value+'"]');
          	clone=child.cloneNode(false);
          	cloneIndex=0;
          	if (child) {
          		var c=child;
          		while((c = c.previousSibling) != null ) 
                		cloneIndex++;
         	 	document.querySelector("#garearrivee").removeChild(child);
          		document.querySelector("#garearrivee").focus();
          	}
    }

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 66
    Par défaut
    01001111

    Le code que vous venez d'écrire fonctionne seulement qu'il y a un tout petit problème.

    Lorsque que je sélectionne une ville dans premier combo et que je viens sélectionner une autre ville dans le deuxième combo, La première ville qui a été sélectionnée dans le combo 1 n'apparaît pas dans le combo 2, ce qui est normal.Je sélectionne donc une autre ville. Ensuite (En même temps) je change la ville qui se trouvait dans le combo 1 pour sélectionner une autre ville. Et lorsque je veux sélectionner la ville dans le combo 2, je ne vois plus la ville la première ville qui a été sélectionnée dans la liste des villes du combo 2 mais je vois plutôt un espace vide à la place.

    Exemple:

    Première tentative de choix: Combo 1 :Lyon - Combo 2 : Nice Correcte rien a signaler car Paris n'apparaît pas dans le combo 2

    Deuxième tentative de choix :Combo 1 : Marseille - Combo 2 : Bastia Là se trouve le problème car Lyon ne s'affiche plus dans le combo 2. il y a plutôt un espace blanc sans doute dû à la fonction RemoveChid.

  7. #7
    Membre chevronné Avatar de 01001111
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2009
    Messages
    319
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2009
    Messages : 319
    Par défaut
    remplacez cloneNode(false) par cloneNode(true) svp, je ne pensais pas que ce booléen concernait le texte aussi

  8. #8
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2013
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 66
    Par défaut
    merci beaucoup

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

Discussions similaires

  1. Vérification de la valeur d'un champ avant envoie du formulaire.
    Par Valadone dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/07/2015, 13h51
  2. Vérification chgt de valeur dans un champ texte
    Par steph_p dans le forum IHM
    Réponses: 2
    Dernier message: 09/09/2008, 09h28
  3. Valeur d'un champ de formulaire dans un mail
    Par Guranga dans le forum IHM
    Réponses: 2
    Dernier message: 08/06/2006, 12h57
  4. Réponses: 5
    Dernier message: 24/05/2006, 14h04
  5. valeur d'un champ de formulaire ajouté depuis une autre page
    Par manaboko dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/12/2005, 09h29

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