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

标签 javascript jquery asp.net validation

我有一个 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/

相关文章:

javascript - 为什么 Object.getPrototypeOf(instance.constructor) 不等于 instance.constructor.prototype?

javascript - Angularjs 根据 true/false 标志显示计算值

javascript - 如何在展开前将事件的 Accordion 滚动到顶部

jquery - 在触发 JQuery 幻灯片之前加载所有图像

javascript - asp.net使用jquery和javascript来确定与按钮匹配的文本框ID的中间部分

javascript - Vaadin TextArea 将起始行号设置为 1

javascript - PHP:使用十进制值添加 div 背景颜色(1 = 黑色,0 = 白色)

javascript - 从函数触发日期选择器不起作用

asp.net - 尽管 key 在缓存中,但 MemoryCache.Default.AddOrGetExisiting 返回 null

.net - 跨项目共享母版页的最佳方式是什么