首页 > 解决方案 > 获取无效日期时输入的日期值

问题描述

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

正如我在评论中所读到的,这种行为是设计使然。

问题:

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

标签: javascriptjquerydatetime

解决方案


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

如果您输入 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>


推荐阅读