在输入类型日期和内部旋转箭头中禁用过去的日期
Disable past dates in input type date and also in inner-spin arrows
我使用以下脚本禁用了过去的日期。但我无法在内部旋转箭头中禁用过去的日期。
许多搜索结果显示只隐藏内部旋转箭头;我不想隐藏内部的旋转箭头。是否可以禁用内部旋转箭头中的过去日期?
//disable past dates
var today = new Date().toISOString().split('T')[0];
document.getElementsByName("dateField")[0].setAttribute('min', today);
//hide inner-spin arrows
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none; margin:0;
}
我认为这里的问题之一是"什么是最佳行为",这成为了一种基于观点的理想。所以,如果你在今天之前将日期设置为明年,然后将年份更改为今年,其他部分应该怎么做?这是基于观点的部分,也是你想要操纵的"行为模式"。一旦失去焦点,您似乎需要手动操作日期。
复制上述内容的步骤示例:
- 设置最小/最大日期:
<input id="when" type="date" min="2016-04-06" max="2099-12-31" />
- 将年份更改为2017
- 将月份和日期都更改为01(2017年1月1日)
- 使用微调器将年份更改为2016
- 日期显示为2016年1月1日
根据您的设置,您现在设置了一个无效日期。一旦失去焦点,你需要检测到这一点,然后适当地处理日期有效性问题——你会把它设置回第一个(最短)日期吗?到下一个有效日期的年份?到下个月,那一天在哪里有效?你可以看到,这里的挑战是,这些可能都是你想要的行为,但那可能不是我想要的行为(我们都有不同的意见)。
编辑:在输入事件触发时设置为您的最小值:
var inputMyDate = document.querySelector('input#when');
inputMyDate.addEventListener('input', function() {
var current = this.value;
var min = input.getAttribute("min");
if (new Date(current) < new Date(min)) {
var setmin = new Date(min).toISOString().split('T')[0];
this.value = setmin;
}
});
此代码可以帮助您:
<form action="demo_form.asp">
Enter a date before 1980-01-01:
<input type="date" name="bday" max="1979-12-31"><br>
Enter a date after 2000-01-01:
<input type="date" name="bday" min="2016-12-25"><br>
Quantity (between 1 and 5):
<input type="number" name="quantity" min="1" max="5"><br>
<input type="submit">
</form>
相关文章:
- primefaces日历可以禁用过去的日期和时间吗
- 尝试创建未来的日期,而创建了过去的日期
- 在输入类型日期和内部旋转箭头中禁用过去的日期
- 计算日期选择器+时间选择器是否在东部标准时区的过去
- 通过JavaScript阻止过去的日期?安全
- 如何在不包括当前日期的情况下检查日期是否不是过去
- 时刻.js - 更改已格式化的过去日期的格式
- 在完整日历中禁用过去日期的日单击无法正常工作
- 检查日期是否在过去,无需提交表格
- jquery UI 日期选择器允许过去的日期
- 使用 JavaScript Date 对象处理未来和过去的日期和时间
- JS将过去日期的样式/类名称更改为字符串值
- 引导日期时间选取器禁用过去的时间
- 如何在 jQuery 中停用过去的日期
- 基于过去日期的Mongodb聚合
- 日期选择器没有过去的日期
- 如何从今天起禁用过去的日期's在日历控件中的日期
- jQuery日期时间选择器don'不允许选择过去的时间
- 如何更改引导程序Datepicker的过去日期颜色
- 日期选择器don'不允许过去的日期加上今天