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

Posted

技术标签:

【中文标题】为日期 dd/mm/yyyy 编辑 Jquery.validate.js 验证中的函数【英文标题】:Edit a function in Jquery.validate.js validation for date dd/mm/yyyy 【发布时间】:2017-04-11 14:11:49 【问题描述】:

我在验证系统 (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) || /^\d4[\/\-]\d1,2[\/\-]\d1,2$/.test(value);
,

我不确定我是否修改了正确的东西,所以我需要帮助。

由于我不知道要修改什么,这里是 jquery.validate.js 的链接。

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

【问题讨论】:

new Date(value) 不是一个好主意(尤其是在验证例程中),强烈建议不要使用内置的 Date 构造函数(或 Date.parse)进行解析。 那你有什么建议? 编写你自己的解析器(如果你只支持一种格式就很简单),或者使用一个有解析器的库(有很多好的可用的)。但无论哪种方式,您都必须知道要解析的字符串的格式。否则,你只是把它留给机会。 【参考方案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>

【讨论】:

我明白你说的,但是我到底可以在哪里添加这个功能呢?在 jquery.validate.js 里面有什么标签?

以上是关于为日期 dd/mm/yyyy 编辑 Jquery.validate.js 验证中的函数的主要内容,如果未能解决你的问题,请参考以下文章

使用 JQuery Validate [重复] 以 dd/mm/yyyy 格式验证日期

将日期 javascript 从 yyyy/mm/dd 反转为 dd/mm/yyyy

如何在 PHP 中使用 jquery 验证 'dd/mm/yyyy HH:ii P' 格式的日期时间?

Pandas 将日期字符串从格式 mm/d/yyyy 和 mm/dd/yyyy 转换为 dd.mm.yyyy

分配“dd/MM/yyyy”数据时的日期时间,但它保存为“MM/dd/yyyy”

PHP 将PHP日期dd / mm / yyyy转换为SQL日期YYYY-MM-DD