2014-01-28 55 views
2

我正在预订电影票的网站上工作。我应该如何设置min属性来阻止HTML5日期选择器中的过去日期? (我不想使用提到的here的PHP解决方案。)HTML5日期选择器阻止过去的日期

是否有纯HTML5/Javascript解决方案?

+0

如果你真的是说HTML5'',而不是一些jQuery插件,只要设置'min =“2014-01-01”'就足够了。 – Passerby

+0

这将是静态的。我如何使它动态? –

+0

你是什么意思的“动态”?您始终可以使用DOM来操作属性,这都是标准的。 – Passerby

回答

4

当文档加载时禁用日期输入。运行一个onload函数,将当天的日期以所需的格式插入到最小字段中。

function onLoad() { 
    var input = document.getElementById("dateField"); 
    var today = new Date(); 
    // Set month and day to string to add leading 0 
    var day = new String(today.getDate()); 
    var mon = new String(today.getMonth()+1); //January is 0! 
    var yr = today.getFullYear(); 

    if(day.length < 2) { day = "0" + day; } 
    if(mon.length < 2) { mon = "0" + mon; } 

    var date = new String(yr + '-' + mon + '-' + day); 

    input.disabled = false; 
    input.setAttribute('min', date); 
} 

document.addEventListener('load', onLoad, false); 

<body> 
    <input id="dateField" type="date" disabled /> 
</body> 

这是一个小提琴:http://jsfiddle.net/tj9Xh/2/

+0

我更新的一天也是一个字符串。这是第27次,所以直到事实发生之后,我才想起个位数日期。 – atxpunkrock

0

试试这个:

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


var dt= new Date(); 
    var yyyy = dt.getFullYear().toString(); 
    var mm = (dt.getMonth()+1).toString(); // getMonth() is zero-based 
    var dd = dt.getDate().toString(); 
    var min = yyyy +'-'+ (mm[1]?mm:"0"+mm[0]) +'-'+ (dd[1]?dd:"0"+dd[0]); // padding 
alert(min); 
$('#dateField').prop('min',min); 
相关问题