Récupérer un input date

Résolu/Fermé
juliendu51100 Messages postés 444 Date d'inscription samedi 14 mars 2015 Statut Membre Dernière intervention 22 juin 2021 - Modifié le 15 févr. 2019 à 22:48
juliendu51100 Messages postés 444 Date d'inscription samedi 14 mars 2015 Statut Membre Dernière intervention 22 juin 2021 - 16 févr. 2019 à 22:51
Bonjour a toute et a tous ! j'ai un formulaire dans lequel l'utilisateur doit choisir une date de début et une date de fin. Pour cela il a un
<input type="date" id="date_debut">
pour le début et un autre pour la fin j'en suis donc arriver ici
var date_debut = new Date($('#date_debut').val());
var date_fin = new Date($('#date_fin').val());

if (date_debut > date_fin)
{
alert("La date de fin doit etre apres la date de début !");
}
elseif (date_debut == date_fin)
{
alert("La date de début et fin sont identique");
}

Pour moi jusque là cela me parrais correct cependant je n'arrive a pas envoyer les valeurs choisis dans ma fonction pour les tester de plus je ne trouve pas comment je pourrais faire dans le cas ou la date de debut et plus tard que la date de fin pour remettre les deux champs "vide" Merci a vous pour votre aide :)

3 réponses

nulenmathe Messages postés 425 Date d'inscription dimanche 7 septembre 2014 Statut Membre Dernière intervention 31 juillet 2019 150
16 févr. 2019 à 02:16
Car Date est un objet et un non une variable

Lisez cette doc qui vous éclairera sur son fonctionnement

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date
1
juliendu51100 Messages postés 444 Date d'inscription samedi 14 mars 2015 Statut Membre Dernière intervention 22 juin 2021 6
Modifié le 16 févr. 2019 à 18:20
me revoilà.. Apparemment je suis partie dans les méandre de la POO alors que je ne suis pas encore prêt.. pour résoudre ce problème j'ai donc réaliser c'est lignes :
 function controle_date()
{
date_debut = document.getElementById("date_debut").value;
date_fin = document.getElementById("date_fin").value;
  if (date_debut > date_fin)
  {
    alert("Erreur");
date_fin.innerHTML = "";
  }
  else
  {
    alert("OK");
  }
}

Les deux première me permettent de récupérer les des deux inputs et ensuite j'effectue les différentes conditions et si la date de début est plus grande que la date de fin alors il affiche une erreur et vide le champs.

Le problème que j'ai maintenant c'est a quel moment je peux appeler la fonction et comment par exemple si je fait avec cette ligne

 <input type="date"  name="date_debut" id="date_debut" onclick="controle_date()" required>

la fonction vas être appeler pas au moment ou j'aurais choisis ma date mais au moment ou j'aurais cliquer sur le input..


EDIT : Correction des balises de code pour avoir la coloration syntaxique
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
16 févr. 2019 à 18:21
Bonjour,


Le problème que j'ai maintenant c'est a quel moment je peux appeler la fonction
[...]
la fonction vas être appeler pas au moment ou j'aurais choisis ma date mais au moment ou j'aurais cliquer sur le input..


C'est quoi la question ??
Comment faire appel à ta question lorsque tu en auras besoin ???
Et bien... en appelant la fonction.... lorsque u en auras besoin justement....
C'est toi qui sait "quand" tu en auras besoin... nous on ne sait rien de ton code, de sa finalité ou de comment tu comptes l'utiliser....
-1
juliendu51100 Messages postés 444 Date d'inscription samedi 14 mars 2015 Statut Membre Dernière intervention 22 juin 2021 6
Modifié le 16 févr. 2019 à 18:30
Bonjour désoler de ne pas avoir étais suffisamment claire..
Mon problème c'est que actuellement si je clique sur mon input pour choisir une date il appel directement la fonction(sans aucune date du coup).. la fonction n'est pas appeler au bon moment.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649 > juliendu51100 Messages postés 444 Date d'inscription samedi 14 mars 2015 Statut Membre Dernière intervention 22 juin 2021
16 févr. 2019 à 18:36
Tournes toi vers les différents event
comme le onblur par exemple https://www.w3schools.com/jsref/event_onblur.asp
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
16 févr. 2019 à 18:37
Tu as aussi le onchange
0
juliendu51100 Messages postés 444 Date d'inscription samedi 14 mars 2015 Statut Membre Dernière intervention 22 juin 2021 6
16 févr. 2019 à 18:50
merci je vais voir de suite :)
0
juliendu51100 Messages postés 444 Date d'inscription samedi 14 mars 2015 Statut Membre Dernière intervention 22 juin 2021 6
Modifié le 16 févr. 2019 à 23:14
voici le code final fonctionnel merci pour votre aide :)
<label class="bmd-label-floating">Date et heure de debut de publication : </label>
<input type="date"  name="date_debut" id="date_debut" min="<?php echo date("Y-m-d"); ?>" max="<?php  echo date("Y-m-d",strtotime("+1 years")); ?>" onfocus="controle_date()" required>
                            <input type="time" name="heure_debut" id="heure_debut" onfocus="controle_date()" required>
                            <label class="bmd-label-floating">Date et heure de fin de publication : </label>
                            <input type="date" name="date_fin" id="date_fin" min="<?php echo date("Y-m-d"); ?>" max="<?php  echo date("Y-m-d",strtotime("+1 years")); ?>" onfocus="controle_date()" required>
                            <input type="time" name="heure_fin" id="heure_fin" onfocus="controle_date()" required>
<script>function controle_date()
{
  date_debut = document.getElementById("date_debut").value;
  date_fin = document.getElementById("date_fin").value;
  heure_debut = document.getElementById("heure_debut").value;

  if (date_debut !== "")
  {
    var date = document.getElementById("date_fin");
    date.setAttribute('min', date_debut);
  }
  if (date_debut == date_fin && date_debut !== "" && date_fin !== "")
  {
    var heure = document.getElementById("heure_fin");
    heure.setAttribute('min', heure_debut);
  }

}</script>
0