4

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

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

所有用户都使用 Chrome 作为浏览器。

当他们输入完全超出范围的日期时,日期范围验证会正常工作。当他们仅在现有日期中更改year或 year 和日期的其他部分(月或日,但不能同时更改两者)以使其超出有效范围时,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 之间的日期并提交
  • 日期将显示为提交。
  • 在日期字段中选择ONLY THE YEAR并将其更改为有效范围之外的值
  • 再次点击提交。
  • 请注意,提交的日期不会更改,即使您的无效日期仍显示在表单控件中。
4

0 回答 0