javascript - 如何在输入类型日期字段中仅重置年份?
问题描述
在某些情况下,我只想重置日期输入库中的年份。
请参阅下面的示例,如果用户键入日期大于,我想重置年份2022-12-31
。
当我尝试它重置整个日期但我只想重置年份而不是完整日期。
示例:如果用户类型01/01/2023
,则应将其重置为01/01/yyyy
.
$('#date-input').change(function(e) {
let input = $(this);
if (input.prop('max') < input.val()) {
var value = input.val().substring(5, 10);
console.log(value);
input.val(value);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<input type="date" id="date-input" placeholder="MM / DD / YY" max="2022-12-31"></span>
解决方案
这是不可能的,我害怕。当您为输入设置日期时,它必须是有效的日期。
您可以做的最好的事情是将其设置为一个日期,然后显示一条消息以警告用户他们输入的日期晚于最大日期。您可以将其设置为当前年份,或者如果不希望人们错误地继续当前年份(例如,即使“0001”也可以),也可以将其设置为没有意义的年份,但您不能只将年份清除为yyyy
.
在下面的示例中,如果日期在最大日期之后:
- 获取输入的年份并显示一条消息说它是无效的
- 用当前年份替换输入的年份
- 将焦点重新放在输入上 - 无法将焦点专门设置在年份上,但在大多数情况下,当整个输入获得焦点时,它将选择年份作为最后输入的信息。
$('#date-input').change(function(e) {
let input = $(this);
$('.date-error').text("");
if (input.prop('max') < input.val()) {
var inputyear = input.val().substring(0, 4);
$('.date-error').text(inputyear+ " is not a valid year. Please enter a date before 31/12/2022");
var value = input.val().substring(5, 10);
CurrYear = new Date().getFullYear();
value = CurrYear+"-"+value;
input.val(value);
input.focus();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<input type="date" id="date-input" placeholder="MM / DD / YY" max="2022-12-31"></span>
<div class="date-error"></div>
推荐阅读
- python - 如何在 for 循环 matplotlib 内创建分组条形图
- reactjs - Symfony 400 错误必须提供密钥“电子邮件”
- laravel - 如何使用 Laravel 在同一视图中显示来自两个不同表的记录?
- javascript - 将小数转换为厘米或英寸后有条件地格式化小数
- python - 如何在熊猫数据框中的多列中选择最大值和最小值?
- javascript - 有没有办法使某些字符串或值与 JS 中的其他字符串或值等效?
- javascript - React Native:当您滑回已安装的屏幕时如何触发事件?
- reactjs - 使用 Spring 单点登录
- html - 如何让 Tab 键执行我期望的操作
- python - 如何在scrapy中添加进度条以下载视频?