2015-09-03 436 views
10

我只是有這樣的代碼簡單的一行:設置日期輸入字段的最大日期爲今天

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

有一個簡單的方法來設置最大日期爲「今天」,而不是2000-01-01 ?或者我必須使用Javascript來做到這一點?

回答

5

JavaScript將是必需的;例如:

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

JSFiddle demo

2

yes和no。有最小值和最大值的屬性在HTML 5,但

在Internet Explorer 10+或Firefox max屬性不會爲日期和時間的工作,因爲IE 10+和Firefox不支持這些輸入類型。

因此,如果您對該屬性的文檔感到困惑,但它不起作用,這就是爲什麼。
有關版本,請參見W3 page

我發現它最容易使用Javascript,其他答案說,因爲你可以使用預製模塊。此外,許多Javascript日期選擇器庫有一個最小/最大設置,並有很好的日曆外觀。

28

您將需要Javascript才能做到這一點:

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

完美地工作..希望HTML5原生提供這種功能或靈活的日期格式選項 – exexzian

9

代替的Javascript,較短的基於PHP的解決方案可能是:

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

您應該使用適當的模板系統,而​​不是混合HTML和PHP代碼。 – bfontaine

0

我也有同樣的問題。我建立它低谷此way.I使用Struts 2框架。

<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"/> 

這對我有效。

相關問題