【问题标题】:Get value of date input when invalid date获取无效日期时输入的日期值
【发布时间】:2020-10-05 21:36:41
【问题描述】:

jsFiddle中,如果输入设置为无效日期,如2/31/2000,.val()返回""

<input type="date" id="date-test" />
<div id="date-label"></div>
$('#date-test').on('change', function() {
    var inputDate = $(this).val();
    $('#date-label').html(inputDate)
});

正如我在 cmets 中看到的,这种行为是设计使然。

问题:

由于无法检查空字符串,如何判断用户未输入日期和输入无效日期?

【问题讨论】:

  • 你在什么浏览器上测试?在 chrome 上我收到此警告 The specified value "31/31/3333" does not conform to the required format, "yyyy-MM-dd"
  • 在 Chrome 中测试
  • 它应该是这样工作的。尝试在 type="number" 输入中输入无效数字
  • 关于“为什么”,见input date empty if entered incorrectly
  • 有趣。那么有没有办法访问“错误的日期”?如何区分用户未输入日期和输入无效日期?

标签: javascript jquery datetime


【解决方案1】:

这让我开始思考,所以我玩了一下,也许这样的事情可以帮助或激发某人的其他想法......

如果您输入 02/31/2000,您将得到输入的内容。但是这样做有明显的问题。

也就是说,你也可以不经意地使用一些日期选择器库,这就是他们所做的。时间和日期等 HTML 元素非常有限,我认为这不会很快改变。

let keys = [];
document.onkeypress = function(e) {
  e = e || window.event;
  console.clear();
  keys.push(e.code)
  //console.log(keys)
};

$('#date-test').on('input', function() {
  let keys2 = [];
  keys.forEach(key => {
    let key3 = key.split("Digit")
    keys2.push(key3[1])
  })  
  $('#date-label').html(keys2)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="date" id="date-test" />
<div id="date-label"></div>

【讨论】:

    猜你喜欢
    • 2017-11-22
    • 1970-01-01
    • 2021-01-06
    • 2020-04-21
    • 2016-03-31
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多