2013-06-19 103 views

回答

29

You can add a min or max attribute to the input type=date。日期必須採用ISO格式(yyyy-mm-dd)。儘管用戶可以在不使用日期選擇器的情況下手動輸入無效日期,但在許多移動瀏覽器和當前版本的Chrome中都支持此功能。

<input name="somedate" type="date" min="2013-12-25"> 

minmax屬性必須是一個完整的日期;沒有辦法指定「今天」或「+0」。要做到這一點,你需要使用JavaScript或服務器端語言:

var today = new Date().toISOString().split('T')[0]; 
document.getElementsByName("somedate")[0].setAttribute('min', today); 

http://jsfiddle.net/mblase75/kz7d2/

今天才排除,同時允許過去或將來的日期,是不是一個不錯的選擇。但是,如果您的意思是您希望明天成爲min日期(今天和所有過去日期空白),請參閱this questiontoday增加一天。

與所有其他涉及HTML表單的情況一樣,無論您如何限制客戶端,您都應該始終驗證現場服務器端。

+0

這是否工作? – Pasta

+0

@Pasta是的,它的確如此。你有執行它的具體問題嗎? – Blazemonger

+1

如果用戶通過輸入而不是按日曆插入日期,這不起作用:( – smartmouse

9

是的,這很容易。 您可以通過以下

<input type="date" min="<?php echo date("Y-m-d"); ?>" > </input> 
+21

誰說他使用PHP? – Blazemonger

+1

如果他不使用,那麼他必須使用可能是。 我認爲html5不提供這種便利。 如果你知道如何做到這一點,而不使用PHP然後發佈你的答案plz所以我也可以升級我的知識 – Ritesh

+2

完成:http://stackoverflow.com/a/19253547/901048 – Blazemonger

0

您可以使用它來禁用將來的日期做到這一點:
裏面你document.ready功能,將

//Display Only Date till today // 

var dtToday = new Date(); 
var month = dtToday.getMonth() + 1;  // getMonth() is zero-based 
var day = dtToday.getDate(); 
var year = dtToday.getFullYear(); 
if(month < 10) 
    month = '0' + month.toString(); 
if(day < 10) 
    day = '0' + day.toString(); 

var maxDate = year + '-' + month + '-' + day; 
$('#dateID').attr('max', maxDate); 

和形式

<input id="dateID" type="date"/> 

這裏工作jFiddle Demo