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 :

Comparaison de deux selects


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 42
    Par défaut Comparaison de deux selects
    Bonjour

    Je fait un site ou on doit sélectionner une heure de début et une heure de fin dans un formulaire j'ai donc fait deux select avec les différents choix d'horaire mais j'ai une question comment faire pour que lors de l'envoi du formulaire il check si l'heure de début est bien inférieur a l'heure de fin ?

    Merci
    voilà le bout de code pour l'instant
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <b>de</b>
    <select id="selectbasic" name="selectheuredebut" class="input-xlarge" tabindex="1" required="required">
        <option selected="selected"></option>
        <option value="1">7:00</option>
        <option value="2">7:30</option>
        <option value="3">8:00</option>
        <option value="4">8:30</option>
        <option value="5">9:00</option>
        <option value="6">9:30</option>
        <option value="7">10:00</option>
        <option value="8">10:30</option>
        <option value="9">11:00</option>
        <option value="10">11:30</option>
        <option value="11">12:00</option>
        <option value="12">12:30</option>
        <option value="13">13:00</option>
        <option value="14">13:30</option>
        <option value="15">14:00</option>
        <option value="16">14:30</option>
        <option value="17">15:00</option>
        <option value="18">15:30</option>
        <option value="19">16:00</option>
        <option value="20">16:30</option>
        <option value="21">17:00</option>
        <option value="22">17:30</option>
        <option value="23">18:00</option>
        <option value="24">18:30</option>
        <option value="25">19:00</option>
        <option value="26">19:30</option>
        <option value="27">20:00</option>
    </select>
    <b>a</b>
    <select id="selectbasic" name="selectheurefin" class="input-xlarge" tabindex="1" required="required">
        <option selected="selected"></option>
        <option value="1">7:00</option>
        <option value="2">7:30</option>
        <option value="3">8:00</option>
        <option value="4">8:30</option>
        <option value="5">9:00</option>
        <option value="6">9:30</option>
        <option value="7">10:00</option>
        <option value="8">10:30</option>
        <option value="9">11:00</option>
        <option value="10">11:30</option>
        <option value="11">12:00</option>
        <option value="12">12:30</option>
        <option value="13">13:00</option>
        <option value="14">13:30</option>
        <option value="15">14:00</option>
        <option value="16">14:30</option>
        <option value="17">15:00</option>
        <option value="18">15:30</option>
        <option value="19">16:00</option>
        <option value="20">16:30</option>
        <option value="21">17:00</option>
        <option value="22">17:30</option>
        <option value="23">18:00</option>
        <option value="24">18:30</option>
        <option value="25">19:00</option>
        <option value="26">19:30</option>
        <option value="27">20:00</option>
    </select>

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Attention tes deux <select> ont le même id, normalement un id doit être unique. Là tu ne peux pas accéder au second <select> avec getElementById. Corrige déjà ce problème et après ajoute le code JavaScript. Je vais partir sur ces deux id :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select id="heure-debut" name="selectheuredebut" ...>
      ...
    </select>
    <select id="heure-fin" name="selectheuredebut" ...>
      ...
    </select>

    Il te faut une fonction qui sera appellée lorsque l'un des deux <select> lance un évènement change. Tu peux surveiller aussi les évènements keyup mais c'est un choix qui a des pour et des contre.

    Dans cette fonction, tu dois récupérer les attributs value. Ils te donnent des chaînes (par exemple "7"), et tu dois les convertir en nombres avec parseInt pour les comparer correctement. En effet, la comparaison de chaînes se fait dans l'ordre lexicographique, par exemple la chaîne "27" est inférieure à la chaîne "3", donc la conversion en nombre est obligatoire pour un résultat correct.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function verifierDebutFin() {
      var debut = parseInt(document.getElementById("heure-debut").value);
      var fin   = parseInt(document.getElementById("heure-fin").value);
      if (fin < debut) {
        alert("Veuillez choisir une heure de fin supérieure à l'heure de début.");
      }
    }
    Là j'ai mis un alert pour faire simple, mais si tu as un endroit dans le HTML où insérer le message, c'est mieux.

    Pour surveiller les évènements change, utilise addEventListener comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    document.getElementById("heure-debut").addEventListener("change", verifierDebutFin);
    document.getElementById("heure-fin").addEventListener("change", verifierDebutFin);
    Veille à ce que ton script s'exécute après que les <select> aient été créés, sinon ça ne marchera pas. Donc place ton script à la fin du <body> ou utilise un évènement load ou DOMContentLoaded.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 42
    Par défaut
    nickel Merci ça marche
    en effet je n'avais pas fait attention aussi pour les id identiques

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 42
    Par défaut
    Je viens de trouver un petit truc c'est que si la date de debut est superieur a la date de fin et que l'on appui sur OK on peut quand meme envoyer sur formulaire avec des horaires pas cohérent

    je pensais donc rajouter deux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            document.getElementById("selectHeureDebut").addEventListener("change", verifierDebutFin);
            document.getElementById("selectHeureFin").addEventListener("change", verifierDebutFin);
    quand j'appui sur le bouton d'envoi du formulaire avec ce bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
              <div class="controls">
                <button id="Reserver" name="Reserver" class="btn btn-primary">Réserver</button>
              </div>
    mais je ne sais pas trop quoi mettre a la place de change

    Edit : Je viens de trouver j'ai ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("Reserver").addEventListener("click", verifierDebutFin);

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

Discussions similaires

  1. Sous requête, comparaison de deux select
    Par Playstate dans le forum Langage SQL
    Réponses: 4
    Dernier message: 24/02/2015, 23h44
  2. PL/SQL COMPARAISON DE DEUX TABLEAUX APRES BULK
    Par mimi_été dans le forum PL/SQL
    Réponses: 5
    Dernier message: 30/06/2009, 12h14
  3. Réponses: 5
    Dernier message: 10/06/2009, 11h01
  4. UNION de deux SELECT avec nombre d'arguments différents
    Par orus8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 14h32
  5. Réponses: 5
    Dernier message: 06/10/2003, 17h49

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