Partage
  • Partager sur Facebook
  • Partager sur Twitter

Controle de dates dans un formulaire

Sujet résolu
    28 octobre 2021 à 8:08:28

    Bonjour,
    Ne connaissant rien à JS, je me retourne ici.
    J'ai un formulaire html dans lequel je dois avoir un contrôle de saisi de date (date de début et date de fin).
    <form id="contrat" method="post" action="action.php">
    <label for="date_debut">Date de début:</label> <input id="date_debut" type="date" name="date_debut" value="" required>
    <label for="date_fin">Date de fin:</label> <input id="date_fin" type="date" name="date_fin" value="" required>
    </form>

    Visiblement, un JS permettrait de vérifier que la date de fin soit postérieure à la date de début....

    l'idéal serait d'empêcher même de sélectionner une date de fin antérieure à la date de début, ce qui se voit souvent sur les sites de réservation...

    Merci par avance.
    • Partager sur Facebook
    • Partager sur Twitter
      28 octobre 2021 à 9:55:39

      Salut,

      const dateDebut = document.querySelector('#date_debut');
      const dateFin = document.querySelector('#date_fin');
      dateDebut.addEventListener('change', () => {
          if(dateFin.valueAsNumber < dateDebut.valueAsNumber) // Si la date de début est supérieur à celle de fin :
              dateFin.value = null; // On vide le champ date_fin
          if(dateDebut.value) // S'il y a bien une valeur dans date_debut :
              dateFin.min = dateDebut.value; // On défini la date minimum de date_fin à celle de date_debut
          else // Sinon :
              dateFin.min = null; // On retire cette limite minimum
      });



      • Partager sur Facebook
      • Partager sur Twitter
        28 octobre 2021 à 13:21:20

        Bonjour,

        Un grand merci.

        Cette solution fonctionne très bien quand on sélectionne sur le petit calandrier.

        En revanche, on peut contourner le problème en remplissant le champ avec le clavier. Et là, il n'y a pas de contrôle.

        • Partager sur Facebook
        • Partager sur Twitter
          28 octobre 2021 à 13:32:11

          Oui c'est vrai, tu peux toujours écrire une valeur interdite, mais normalement tu ne peux pas valider le formulaire si la condition n'est pas respecté.

          Ajoute un input[type="submit"] pour t'en rendre compte.

          Sinon, tu peux aussi tester la validité du remplissage d'un champ grâce à la méthode .checkValidity():

          console.log(dateFin.checkValidity());
          /**
           * Renvoi true si le champ est valide
           * False s'il ne l'est pas...
           **/

          -
          Edité par BrainError 28 octobre 2021 à 13:41:26

          • Partager sur Facebook
          • Partager sur Twitter
            28 octobre 2021 à 17:50:58

            ça fonctionne très très bien il est vrai avec la validation du questionnaire.

            Un grand merci pour le temps passé pour me donner un coup de main. quand on est un informaticien du dimanche comme je suis, cela est très appréciable.

            Merci beaucoup.

            • Partager sur Facebook
            • Partager sur Twitter

            Controle de dates dans un formulaire

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown