输入日期最小/最大属性仅指定年份和月份

时间:2014-05-25 19:41:48

标签: javascript html input

我有以下内容:

<input type="date" max="2014-10-31">

我可以只指定?我想这就像是:

<input type="date" max="2014-10-xx">

或只是

<input type="date" max="2014-10">

(假设格式为yyyy / mm / dd)。

剩下的就是HTML。我不能具体说明这一天,只有年和月(由服​​务器端给出),因为每个月有不同的最大天数(如2月,有28个)。所以,最多不能是31。

当我把 31 [day]作为max属性时,有28,30个月停止工作的月份,我的意思是,input变得奇怪,所以我可以修改这个月也是如此,但不会发生因为用户应该只能更改 - 月份和日期是具体的。

3 个答案:

答案 0 :(得分:2)

您可以使用以下内容:

<input class="month-date" type="date" max="2014-02">
var els = document.getElementsByClassName("month-date");
for(var i=0, l=els.length; i<l; ++i) {
    var max = els[i].getAttribute('max').split('-');
    max.push(new Date(max[0], max[1], 0).getDate());
    els[i].max = max.join('-');
}

Demo

答案 1 :(得分:1)

不,你不能用HTML做到这一点。根据定义,<input type="date" ...>中的max值必须是特定日期,且必须是有效日期。

您应该在生成HTML标记时计算预期月份的最后一天。

答案 2 :(得分:0)

是的,您可以使用以下内容:

Date(day/month/year): <input type="date" value="2017-07-20" min="2000-01-01" max="2020-01-01">
<hr />
Date(Month/Year): <input type="month" value="2017-07" min="2000-01" max="2020-01">
<hr />
Date(year): <input type="number" value="2017" min="2000" max="2020">

现场演示:https://jsfiddle.net/2fupfqgz/2/