我在验证系统中的日期字段时遇到问题(asp.net)。我已经使用注释标准化了类中的字段:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
它工作得很好,向我显示我想要的字段,但是当我尝试编辑时,表单会显示如下错误:
The field [field] must be a date.
所以我无法保存版本,因为它没有通过jquery验证器。
我已将c#注释标准化为dd / mm / yyy,但jquery设置为mm / dd / yyyy。
在我的测试中,我发现(我猜)其中一个文件是对表单中的日期字段进行验证的文件:
我发现这是因为当我从页面中删除这些脚本时,验证不起作用,但我也不确定这个脚本是否会调用它们。
在jquery.validate.js中我找到了这个函数,我试图以多种方式编辑它,但没有成功:
date: function( value, element ) {
return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
},
dateISO: function( value, element ) {
return this.optional(element) || /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/.test(value);
},
我不确定我正在修改正确的东西,所以我需要一只手,请。
由于我不知道要修改什么,这里是jquery.validate.js的链接。
答案 0 :(得分:1)
您可以编写自己的解析器功能,如@RobG建议的那样,或者您可以修改原始解析器功能,如果您不在页面中使用它。 我使用旧版本的Globalize插件,并且有一些功能可以改变语言'用于验证插件,作为1.234,56格式的数字(而不是标准的1,234.56英文格式)等等......
在您的情况下,您可以使用:
$.validator.methods.date = function (value, element) { /* place your function here */ }
覆盖默认行为。
你可以在这里找到dd / MM / yyyy的reg expr: Regex to validate date format dd/mm/yyyy
编辑: 你在哪里这样做?好的,在你自己的javascript代码中,只需在加载jquery.validate插件之后。你也可以等到onReady事件。
<script src="jquery.validate.min.js"></script>
<script>
$(function(){
$.validator.methods.date = ...
})
<script>