如何在输入类型日期字段中仅重置年份?

时间:2020-08-24 17:50:41

标签: javascript html html5-input-date

在某些情况下,我只想重置日期输入基准。

请参见下面的示例,如果用户键入的日期大于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>

1 个答案:

答案 0 :(得分:3)

恐怕是不可能的。设置输入日期时,该日期必须是有效日期。

最好的办法是将其设置为日期,然后显示一条消息以警告用户他们 输入的日期晚于最大日期。您可以将其设置为当前年份,或者如果不想让人们错误地继续使用当前年份(例如,即使是“ 0001”也可以)则没有意义的年份,但是您不能仅将年份清除为{{1} }。

在下面的示例中,如果日期晚于最大日期:

  • 获取输入的年份并显示一条消息,指出其无效
  • 用当前年份替换输入的年份
  • 将焦点重新放在输入上-无法将焦点专门设置在年份上,但是在大多数情况下,当整个输入获得焦点时,它将选择年份作为最后输入的信息。

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();
  }
});