Tout, j'utilise l'interface jQuery pour le sélecteur de date. J'essaie de vérifier avec javascript bien que la date que l'utilisateur a entrée est dans le passé. Voici mon code de formulaire:

<input type="text" id="datepicker" name="event_date" class="datepicker">

Comment puis-je vérifier cela avec Javascript pour m'assurer qu'il ne s'agit pas d'une date dans le passé? Merci

52
user1048676 29 nov. 2011 à 06:56

4 réponses

Meilleure réponse
$('#datepicker').datepicker().change(evt => {
  var selectedDate = $('#datepicker').datepicker('getDate');
  var now = new Date();
  now.setHours(0,0,0,0);
  if (selectedDate < now) {
    console.log("Selected date is in the past");
  } else {
    console.log("Selected date is NOT in the past");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
<input type="text" id="datepicker" name="event_date" class="datepicker">
117
Amadan 6 janv. 2018 à 14:55

Pour rendre la réponse plus réutilisable pour d'autres choses que la fonction de changement de datepicker, vous pouvez créer un prototype pour gérer cela pour vous.

// safety check to see if the prototype name is already defined
Function.prototype.method = function (name, func) {
    if (!this.prototype[name]) {
        this.prototype[name] = func;
        return this;
    }
};
Date.method('inPast', function () {
    return this < new Date($.now());// the $.now() requires jQuery
});

// including this prototype as using in example
Date.method('addDays', function (days) {
    var date = new Date(this);
    date.setDate(date.getDate() + (days));    
    return date;
});

Si vous n'aimez pas le contrôle de sécurité, vous pouvez utiliser la méthode conventionnelle pour définir des prototypes:

Date.prototype.inPast = function(){
    return this < new Date($.now());// the $.now() requires jQuery
}

Exemple d'utilisation

var dt = new Date($.now());
var yesterday = dt.addDays(-1);
var tomorrow = dt.addDays(1);
console.log('Yesterday: ' + yesterday.inPast());
console.log('Tomorrow: ' + tomorrow.inPast());
2
Mike 6 juin 2018 à 17:28
var datep = $('#datepicker').val();

if(Date.parse(datep)-Date.parse(new Date())<0)
{
   // do something
}
9
Leistungsabfall 23 déc. 2015 à 10:51
function isPrevDate() {
    alert("startDate is " + Startdate);
    if(Startdate.length != 0 && Startdate !='') {
        var start_date = Startdate.split('-');
        alert("Input date: "+ start_date);
        start_date=start_date[1]+"/"+start_date[2]+"/"+start_date[0];
        alert("start date arrray format " + start_date);
        var a = new Date(start_date);
        //alert("The date is a" +a);
        var today = new Date();
        var day = today.getDate();
        var mon = today.getMonth()+1;
        var year = today.getFullYear();
        today = (mon+"/"+day+"/"+year);
        //alert(today);
        var today = new Date(today);
        alert("Today: "+today.getTime());
        alert("a : "+a.getTime());
        if(today.getTime() > a.getTime() )
        {
            alert("Please select Start date in range");
            return false;
        } else {
            return true;
        }
    }
}
-8
Vignesh 12 févr. 2013 à 07:05
8305259