【问题标题】:How can I only allow up to one year from today's date to be selected from datepicker?我如何只允许从日期选择器中选择从今天开始最多一年的时间?
【发布时间】:2019-04-25 17:23:21
【问题描述】:

现在我的日历正在工作并进行设置,以便根据今天的日期禁用粘贴日期。如何在当前日期后 365 天后禁用日期?

小提琴:https://jsfiddle.net/ts8acmow/1/

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

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

【问题讨论】:

  • HTML 元素应该允许你设置一个最小和最大日期作为属性,在这种情况下这不起作用吗?
  • 但我希望它根据当前日期动态更新。即:从今天起 365 天 =4/25/2020
  • Add year to todays date的可能重复
  • 你应该可以使用JS来设置该属性的值。
  • @bluemoon6790 我链接了它,因为当您提到设置最小最大日期时,OP 更关注动态部分而不是 max 字段部分。

标签: javascript html


【解决方案1】:

其实原理是一样的,只不过是max属性。

你可以这样做:

function fmt(dt) {
    return dt.toLocaleDateString("se"); // shortcut: Sweden locale has YYYY-MM-DD format
}

var today365 = new Date();
today365.setDate(today365.getDate()+365);

var start = document.getElementById("start");
start.setAttribute("min", fmt(new Date()));
start.setAttribute("max", fmt(today365));
&lt;input type="date" id="start"&gt;

【讨论】:

  • 那行不通,从今天起我仍然可以走得更远一年多。过去的日期也必须保持禁用状态
  • minmax 属性的工作方式不是阻止,而是用视觉指示(如红色边框)指示无效条目。我认为这就是您想要的,正如您在问题中所说的那样,您可以在过去的日期中使用它。这只是同一个原理,所以我不明白你为什么在这里看到一个问题。
  • 因为我不知道如何禁用未来的日期,所以从今天起只允许选择 1 年
  • 如果添加:start.addEventListener("change",function(){ if(this.max &lt; this.value){ this.value = this.max; } });,如果日期大于选择的最大日期,它将将该字段的值设置为最大值。
  • 在你的小提琴中,过去的日期也可以选择(使用 Chrome 中的箭头,或 FF 中的弹出窗口),所以我不明白你为什么开始你的问题通过声明它禁用过去的日期,如果它不是你想要的。另一方面,在弹出式日历(FF 中)中,超过一年的日期按预期显示为灰色,就像今天日期之前的日期一样。
猜你喜欢
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 2015-07-23
相关资源
最近更新 更多