【问题标题】:Set date forms min attribute to todays date not working [duplicate]将日期表单最小属性设置为今天的日期不起作用[重复]
【发布时间】:2021-05-19 21:05:21
【问题描述】:

我正在尝试创建一个可以发送一些文本和附件的表单。这需要在其创建日期之后的任何时间发送一个日期,因此今天的日期将是最小值。

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("min", today);
<label for="datetosend"> Select the date you wish to send announcement</label>
<input type="date" name="datetosend" id="datefield" max="2021-12-31" min="">

但是当我打开这个时,最小日期没有设置? 我的代码有什么问题?

【问题讨论】:

  • 只是为了确保。在页面加载后(或至少在 HTML 内容下?),您正在运行 javascript 内容。如果没有,请尝试将所有 JS 代码放入 window.onload = function() { //code here } 函数中
  • 您是否在 JavaScript 控制台中遇到任何错误?您在此处发布之前检查过吗?
  • 您的代码在我在这里创建的 sn-p 中工作。
  • 看起来我在控制台中遇到了很多错误。我确实忘记在发布之前检查一下,但我仍然没有更聪明。
  • 很多错误都在说:TypeError: topFrame.browsingContent is null

标签: javascript html date


【解决方案1】:

如果我们尝试在JSFiddle 中按原样执行您的代码,它会正常工作。

我的假设是它试图在元素呈现之前设置属性。检查第二个JSFiddle,我将script 标记放在HTML 中。下面的代码不起作用,因为它在页面正确加载其元素之前执行。

<script>
  ...
  document.getElementById("datefield").setAttribute("min", today);
</script>
<label for="datetosend"> Select the date you wish to send announcement</label>
<input type="date" name="datetosend" id="datefield" max="2021-12-31" min="">

查看您的脚本和 HTML 代码的结构。将这些需要在页面加载后立即运行的脚本放在&lt;body&gt; 标记的末尾,或使用onload 事件侦听器是一个很好的做法。

【讨论】:

  • 我的 JS 代码在一个单独的文件中。然后在 html 的头部我使用脚本 src-.... 调用它。这可能是原因吗?
  • @Fruitpencil 这是一种可能。尝试将其放在 &lt;body&gt; 标记的末尾作为测试,或将其包装在 onload 事件侦听器中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 2015-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
相关资源
最近更新 更多