2009-11-23 19 views
73

Wie deaktiviere ich vergangene Daten auf jQuery Datepicker? Ich habe nach Optionen gesucht, aber scheinbar nichts gefunden, was auf die Möglichkeit hinweist, vergangene Daten zu deaktivieren.jQuery Datepicker, um vergangenes Datum zu verhindern

UPDATE: Vielen Dank für die schnelle Antwort. Ich habe das ohne Glück versucht. Die Tage waren noch nicht ausgegraut, wie ich erwartet hatte und akzeptiere immer noch das ausgewählte vergangene Datum. diese

Ich habe versucht:

$('#datepicker').datepicker({ minDate: '0' }); 

funktioniert nicht.

Ich versuchte dies:

$('#datepicker').datepicker({ minDate: new Date() }); 

Noch funktioniert auch nicht.

Es zeigt das Kalender Widget gut an. Es wird die Eingabe der vergangenen Tage einfach nicht ausgrauen oder verhindern. Ich habe das minDate und maxDate in der Vergangenheit ohne Glück versucht, also habe ich gedacht, dass es nicht sie sein muss.

Antwort

33

Sie müssen nur ein Mindestdatum angeben - Einstellung auf 0 bedeutet, dass das Mindestdatum 0 Tage von heute, d. H. Heute ist. Sie könnten stattdessen die Zeichenfolge '0d' übergeben (die Standardeinheit ist Tage).

$(function() { 
    $('#date').datepicker({ minDate: 0 }); 
}); 
0

Versuchen Sie startDate auf das aktuelle Datum zu setzen. Zum Beispiel:

$('.date-pick').datePicker({startDate:'01/01/1996'}); 
+0

Das sieht aus, als wäre es für Kevin Luck's Date Picker nicht der Standard JQuery one – salonMonsters

135

Try this:

$("#datepicker").datepicker({ minDate: 0 }); 

die Zitate aus 0 entfernen.

+0

Das hat super geklappt! –

+0

Dies sollte die akzeptierte Antwort sein. – BWDesign

+4

@BWDesign Beantwortete eineinhalb Jahre später als ich;) –

9

Dies funktioniert:

$("#datepicker").datepicker({ minDate: +0 }); 
+0

Diese Lösung funktioniert in der Tat! – Michiel

2

Ich verwende Code nach dem Datum zu formatieren und anzuzeigen 2 Monate im Kalender ...

<script> 
$(function() { 

    var dates = $("#from, #to").datepicker({ 

     showOn: "button", 
     buttonImage: "imgs/calendar-month.png", 
     buttonImageOnly: true,       
     defaultDate: "+1w", 
     changeMonth: true, 
     numberOfMonths: 2, 

     onSelect: function(selectedDate) { 




      $(".selector").datepicker({ defaultDate: +7 }); 
      var option = this.id == "from" ? "minDate" : "maxDate", 


       instance = $(this).data("datepicker"), 
       date = $.datepicker.parseDate(
        instance.settings.dateFormat || 
        $.datepicker._defaults.dateFormat, 
        selectedDate, instance.settings); 

      dates.not(this).datepicker("option", "dateFormat", 'yy-mm-dd'); 


     } 
    }); 
}); 

</script> 

Das Problem ist, ich bin nicht sicher, wie vorherige Termine beschränken Auswahl.

23

Entfernen Sie die Anführungszeichen um 0 und es wird funktionieren.

Arbeits Code Snippet:

// set minDate to 0 for today's date 
 
$('#datepicker').datepicker({ minDate: 0 });
body { 
 
    font-size: 12px; /* just so that it doesn't default to 16px (which is kinda huge) */ 
 
}
<!-- load jQuery and jQuery UI --> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script> 
 

 
<!-- load jQuery UI CSS theme --> 
 
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"> 
 

 
<!-- the datepicker input --> 
 
<input type='text' id='datepicker' placeholder='Select date' />

+1

Gibt es eine Erklärung, warum Komma benötigt wird? Ich kann es entfernen und alles funktioniert noch richtig. Gibt es einen Browser, der ein Komma für ein einzelnes Objekt benötigt? – schickm

+0

Sie benötigen nur Kommas, wenn Sie mehrere Optionen verwenden, z. '$ ('# datepicker'). Datepicker ({minDatum: 0, maxDatum:" + 1M + 10D ", datumFormat: 'yy-mm-dd'});' Sie brauchen kein Komma nach dem letzten Option – Tanvir

+1

Sie senden ein Objekt an die Methode. Ein Komma auf dem letzten Wert ist nicht korrekt. –

1

Stellen Sie sicher, dass mehrere Eigenschaften in der gleichen Zeile setzen (da Sie nur 1 Zeile Code gezeigt, können Sie das gleiche Problem gehabt haben Ich tat).

Mine würde das Standarddatum festlegen, aber alte Daten nicht ausgegraut.Dies funktioniert nicht:

$('#date_end').datepicker({ defaultDate: +31 }) 
$('#date_end').datepicker({ minDate: 1 }) 

Dies tut beides:

$('#date_end').datepicker({ defaultDate: +31, minDate: 1 }) 

1 und +1 Arbeit die gleiche (oder 0 und 0 in Ihrem Fall).

Me: Windows 7 x64, Rails 3.2.3 Ruby 1.9.3

22

Wenn Sie mit einer zuvor gebundenen Datumsauswahl handeln dann

$("#datepicker").datepicker({ minDate: 0 }); 

funktionieren nicht einstellen. Diese Syntax ist nur anwendbar, wenn Sie das Widget erstellen.

$("#datePicker").datepicker("option", "minDate", 0); 
+1

Vielen Dank für die zuvor gebundene Lösung – stackoverfloweth

+1

Vielen Dank.Ich habe lange Zeit verschwendet, um diese Lösung zu finden, und das hat mein Problem gelöst. – Rushan

1
var givenStartDate = $('#startDate').val(); 
     alert('START DATE'+givenStartDate); 
     var givenEndDate = $('#endDate').val(); 
     alert('END DATE'+givenEndDate); 
     var date = new Date(); 
     var month = date.getMonth()+1; 
     var day = date.getDate(); 
     var currentDate = date.getFullYear() + '-' + 
      (month<10 ? '0' : '') + month + '-' + 
      (day<10 ? '0' : '') + day; 
     if(givenStartDate < currentDate || givenEndDate < currentDate) 
     { 
     $("#updateButton").attr("disabled","disabled"); 
     } 
     if(givenStartDate < currentDate && givenEndDate > currentDate) 
      { 
      $("#updateButton").attr("enabled","enabled"); 
      } 
     if(givenStartDate > currentDate || givenEndDate > currentDate) { 
     $("#updateButton").attr("enabled","enabled"); 
     } 

Try this:

Um min Termin für ein gebundenes Datumsauswahl verwenden Sie die folgenden Werte gesetzt. Wenn irgendein Fehler, bitte korrigieren Sie mich :) Danke an alle.

10

Geben Sie null, um sich Gedanken zu machen, und es wird vergangene Daten deaktivieren.

$("#datepicker").datepicker({ minDate: 0}); 

Live example

read more here

7

// disable Zukunft Termine

$('#datetimepicker1').datetimepicker({ 
      format: 'DD-MM-YYYY', 
      maxDate: new Date 
     }); 

// disable Vergangenheit

$('#datetimepicker2').datetimepicker({ 
     format: 'DD-MM-YYYY', 
     minDate: new Date 
    }); 
+0

Ich bin mir nicht sicher, warum diese Antwort eine niedrigere Bewertung bekommen hat, weil ihre Lösung für mich funktioniert hat, während die akzeptierte Lösung, die eine '0' verwendet, einen JavaScript-Fehler verursacht hat. +1 – Sheridan

5

Daten. Dies funktioniert für mich

0

ich die min Attribut: min="' + (new Date()).toISOString().substring(0,10) + '"

Hier ist mein Code und es funktionierte.

<input type="date" min="' + (new Date()).toISOString().substring(0,10) + '" id="' + invdateId + '" value="' + d.Invoice.Invoice_Date__c + '"/> 

enter image description here

Verwandte Themen