Chrome日期字段最小/最大默默“纠正”年份

时间:2013-04-17 15:24:57

标签: html5 validation google-chrome date

我有一个包含type = date字段的HTML表单。每个日期字段都有一个最小/最大值设置为基本的健全性检查,因为我的用户喜欢键入表单(而不是使用日期选择器),他们经常键入日期,如“4/17/0213”。

表单由jquery ajax调用提交,该调用由表单提交触发。

所有用户都将Chrome用作浏览器。

当他们完全键入超出范围的日期时,日期范围验证将按预期工作。当他们仅在现有日期更改,或年份和日期的其他部分(月份或日期,但不是两者)时,以使其最终超出有效范围,Chrome会执行此操作不给他们验证错误。相反,它默默地“纠正”年份,使其恢复到之前的状态,使其保持在有效的日期范围内。这会导致垃圾值以静默方式提交给数据库。

我已经尝试在javascript中编写自己的验证例程,但似乎问题是底层数据值没有变为无效年份,因此尝试获取并检查它是浪费时间。就Chrome而言,无效的年份并未输入。

有人知道解决方法吗?

编辑:我已经包含了一些代码来演示部分问题。

<!DOCTYPE HTML>
<html>
<head>
  <title>Date bug test</title>
  <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  <script>
    $(document).ready(function(){
      $(document).on("submit", "FORM", function(){
        $("#dateshow").html("Date entered was: " +  $("input[name=foo]").val());
        return true;
       });
     });
  </script>
</head>
<body>
<form action="javascript:void(0)">
  <input type=date name="foo" min='1980-01-01' max='2080-01-01' />
  <input type=text name="bar">
  <input type=submit>
</form>
<div id=dateshow></div>
</body>

演示:

  • 将其保存为html文件并在Chrome中打开
  • 在日期字段中输入1980年到2080年之间的日期并提交
  • 日期将显示为已提交。
  • 在日期字段中选择年仅并将其更改为有效范围之外的值
  • 再次点击提交。
  • 请注意,即使您的无效日期仍显示在表单控件中,提交的日期也不会更改

0 个答案:

没有答案