编辑Jquery.validate.js中的函数验证日期dd / mm / yyyy

时间:2016-11-27 22:00:04

标签: javascript jquery asp.net validation date

我在验证系统中的日期字段时遇到问题(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
  • jquery.validate.unobtrusive.js

我发现这是因为当我从页面中删除这些脚本时,验证不起作用,但我也不确定这个脚本是否会调用它们。

在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的链接。

https://github.com/KaioMartins/PersonalLibrary/blob/master/PersonalLibrary/Scripts/jquery.validate.js

1 个答案:

答案 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>