gpt4 book ai didi

javascript - 多文化、不引人注目的日期验证

转载 作者:行者123 更新时间:2023-12-01 05:40:56 24 4
gpt4 key购买 nike

我有一个 ASP.NET MVC 项目,我正在使用 jquery.validate.unobtrusive 来执行客户端值验证。但是,我在验证日期时遇到问题。系统需要支持多种文化,但当前大多数用户来自英国,因此使用英国日期格式。

默认情况下,即使输入了有效日期,验证也会失败,说明日期字段必须是有效日期。

我在网上找到了以下代码来更改日期格式:

$.culture = Globalize.culture("en-GB");
$.validator.methods.date = function (value, element) {
//This is not ideal but Chrome passes dates through in ISO1901 format regardless of locale
//and despite displaying in the specified format.

return this.optional(element)
|| Globalize.parseDate(value, "@ViewBag.DateFormat", "en-GB")
|| Globalize.parseDate(value, "yyyy-mm-dd");
};

但是这似乎不再有效 - 我收到“Globalize.culture 不是函数”错误。但是,如果我删除该行,则任何字段都不会得到验证。

似乎您需要下载 jquery.globalize 才能使用该代码,但是现在已从 Github 中提取该代码并合并到较新版本的 JQuery 中(由于与其他库冲突,我无法使用它)。

使用新的 Globalize 似乎也不起作用。

是否有一种更简单的方法来执行适用于任何文化的日期验证?或者是否有一个指向旧版本 Globalize 的链接可以按照建议工作?

最佳答案

这里有几个类似的问题: HTML5 change datetime format

jquery ui datepicker and mvc view model type datetime

答案似乎建议了 3 种方法:

1)使用 jquery globalize 覆盖不显眼的 jquery

2)添加以下脚本(用于日期选择器控件):

$.validator.addMethod('date', function (value, element) {
if (this.optional(element)) {
return true;
}
var valid = true;
try {
$.datepicker.parseDate('dd/mm/yy', value);
}
catch (err) {
valid = false;
}
return valid;
});
$('#dt1').datepicker({ dateFormat: 'dd/mm/yy' });

3)使用隐藏输入。

不幸的是,在我的例子中,没有一个解决方案有效,我必须将模型字段从日期时间转换为字符串,因为它是只读的。

关于javascript - 多文化、不引人注目的日期验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30736733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com