javascript - HTML日期字段设置最大日期与JS
问题描述
在带有 ID 的表单字段中输入第一个日期dateInput
并运行该函数时showEndDate
,inputDate + 21 days
成功输出到控制台,但在带有 ID 的表单字段上没有设置最大值end_date
。我使用setAttribute("max", inputDate)
. _ ?
我已经测试过输入一个固定值,例如setAttribute("max", '2021-10-31')
,这在10 月 31 日有效,确实被正确设置为日期字段中的上最大值!:( :S
// Declare values for use in functions
let dateInput = document.getElementById("dateInput");
var endDateInput = document.getElementById("end_date");
// Shows the end date field
function showEndDate() {
var inputValue = dateInput.value;
var inputDate = new Date(inputValue);
if(inputValue != "") {
document.getElementById("panel").style.display = "block";
} else {
alert("Date cannot be blank");
}
inputDate.setDate(inputDate.getDate() + 21);
console.log(inputDate);
endDateInput.setAttribute("max", inputDate);
}
<input id="dateInput" type="date" name="manufacture_one" required ></div>
还有结束日期:
<input id="end_date" type="date" name="holiday_end_date" >
解决方案
inputDate
是 a Date
,但属性值是字符串。因此,使用默认方法将日期转换为字符串toString
,该方法不提供max
属性预期格式的日期。
您需要明确格式化它。有很多方法可以做到这一点,其中之一(如果你想要 UTC 的日期 [是的,即使只是没有时间的日期也很重要])是inputDate.toString().substring(0, 10)
. 但同样,那将是 UTC。如果您想要当地时间,则必须以另一种方式对其进行格式化。SO(例如这里)和网络上有很多格式化日期的例子。
推荐阅读
- dynamics-crm - MS Dynamics CE CRM 365 - 操作前插件 - 字典中不存在给定键
- powershell - 在 Powershell 中发送密钥 alt+n {TAB} {ENTER}
- azure - 如何为 Azure Web App 虚拟目录启用应用程序洞察力
- node.js - Node.js SOAP(包):如何将 XML 示例转换为查询?
- amazon-web-services - 带有布尔过滤器的graphql appsync查询
- sql - PostgreSQL 的 SELECT 查询中的绑定参数
- ios - IDFA 自动在 Google Analytics for Firebase 中?
- java - 为 Spring Boot 的传入消息添加缺少的 ContentType
- jpa - 如何在运行时根据条件使用不同的 EntityManager?
- php - 通过 Windows 的 bash 终端安装的 PHP 比 Windows 10 的 php 执行得更快