我有一个包含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>
演示: