为日期 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