2015-09-03 20 views
10

Ich habe nur eine einfache Codezeile wie folgt aus:Set Datum max Datum des Eingabefeld heute

<input type='date' min='1899-01-01' max='2000-01-01'></input> 

Gibt es eine einfache Möglichkeit, die max Datum auf „heute“ statt 2000-01-01 ? Oder muss ich dazu Javascript verwenden?

Antwort

5

Javascript wird benötigt; zum Beispiel:

$(function(){ 
    $('[type="date"]').prop('max', function(){ 
     return new Date().toJSON().split('T')[0]; 
    }); 
}); 

JSFiddle demo

2

Ja und nein. Es gibt minimale und maximale Attribute in HTML 5, aber

Das Attribut max wird nicht für Datum und Uhrzeit in Internet Explorer 10+ oder Firefox funktionieren, da IE 10+ und Firefox diese Eingabe Typen nicht unterstützt.

Also, wenn Sie durch die Dokumentation dieser Attribute verwirrt sind, funktioniert es doch nicht, deshalb.
Siehe die W3 page für die Versionen.

Ich finde es am einfachsten Javascript zu verwenden, s die anderen Antworten sagen, da Sie einfach ein vorgefertigtes Modul verwenden können. Außerdem haben viele Javascript-Datumsauswahl-Bibliotheken eine Min/Max-Einstellung und haben dieses schöne Kalender-Aussehen.

28

Sie Javascript müssen dies tun:

HTML

<input id="datefield" type='date' min='1899-01-01' max='2000-13-13'></input> 

JS

var today = new Date(); 
var dd = today.getDate(); 
var mm = today.getMonth()+1; //January is 0! 
var yyyy = today.getFullYear(); 
if(dd<10){ 
     dd='0'+dd 
    } 
    if(mm<10){ 
     mm='0'+mm 
    } 

today = yyyy+'-'+mm+'-'+dd; 
document.getElementById("datefield").setAttribute("max", today); 

JSFiddle demo

+0

funktioniert perfekt .. Wunsch HTML5 nativ angeboten solche Funktion oder viel flexible Datumsformat Optionen – exexzian

9

Anstelle von Javascript, eine kürzere PHP-basierte Lösung könnte sein:

<input type="date" name="date1" max= 
    <?php 
     echo date('Y-m-d'); 
    ?> 
> 
+0

Sie sollten eine ordnungsgemäße Templating-System statt Mischen von HTML-und PHP-Code verwenden. – bfontaine

0

ich es Trog diese way.I verwendet Streben 2 Rahmen auch gleiche Problem hatte .Ich zu bauen.

<script type="text/javascript"> 

    $(document).ready(function() { 
    var year = (new Date).getFullYear(); 
    $("#effectiveDateId").datepicker({dateFormat: "mm/dd/yy", maxDate: 
    0}); 

    }); 


    </script> 

     <s:textfield name="effectiveDate" cssClass="input-large" 
    key="label.warrantRateMappingToPropertyTypeForm.effectiveDate" 
    id="effectiveDateId" required="true"/> 

Das funktionierte für mich.