首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Chrome中的非侵入式验证不会使用dd/mm/yyyy进行验证

Chrome中的非侵入式验证不会使用dd/mm/yyyy进行验证
EN

Stack Overflow用户
提问于 2011-08-02 10:41:01
回答 12查看 46.7K关注 0票数 55

我正在尝试使用最简单的场景,在不同的浏览器中使用日期选择器。我怀疑我用错误的方式做了一件非常简单的事情,但经过大量的搜索,我仍然没有找到解决方案。下面是一些示例代码,它代表了我正在尝试的内容。

如果我使用Chrome (v12.0.742.122),并从选择器中选择一个日期,例如13/08/2011,jQuery验证逻辑将不允许页面提交,即使我已经明确指定格式为'dd/mm/yy‘。

如果我将格式更改为'dd/M/yy‘,并选择2011年8月13日这样的日期,它在Chrome中可以使用,但在IE (v8.0.7600.16385)中不会为我提交。在FireFox (v3.6.18)中,这两种格式都有效。

我需要什么验证脚本才能在Chrome中支持'dd/mm/yy‘的日期格式?

代码语言:javascript
复制
<html>
 <head>
  <link rel="stylesheet" type="text/css" href="jquery-ui.css" />
  <script type="text/javascript" src="jquery-1.4.4.js"></script>
  <script type="text/javascript" src="jquery.validate.js"></script>
  <script type="text/javascript" src="jquery.validate.unobtrusive.js"></script>
  <script type="text/javascript" src="jquery-ui.js"></script>
  <script type="text/javascript">
      $(document).ready(function () {
    $('.date').datepicker({ dateFormat: 'dd/mm/yy' });
            $.validator.addMethod("dateRule", function(value, element) {
      return true;
    },
    "Error message");
      });
  </script>
 </head>
 <body>
    <form>
        Date: <input type="text" name="myDate" class="date dateRule" />
        <input type="submit" />
    </form>
 </body>
</html>
EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2011-08-02 14:15:16

四个小时后,我终于偶然发现了answer。出于某些原因,Chrome似乎有一些固有的偏好,倾向于使用美国的日期格式,而IE和FireFox能够合理地使用操作系统上的区域设置。

代码语言:javascript
复制
jQuery.validator.methods["date"] = function (value, element) { return true; } 
票数 53
EN

Stack Overflow用户

发布于 2012-11-23 20:02:28

您可以使用此处提供的Globalize.js插件:https://github.com/jquery/globalize

然后简单地在网站的主脚本文件中重新定义validate方法,如下所示(避免编辑jquery.validate.js库文件,因为您可能希望在将来更新它):

代码语言:javascript
复制
$.validator.methods.date = function (value, element) {
    return this.optional(element) || Globalize.parseDate(value, "d/M/y", "en");
}
票数 49
EN

Stack Overflow用户

发布于 2013-04-04 20:45:11

我知道我来得有点晚,但这是我用来解决Chrome验证不接受英国格式日期的解决方案。一个简单的即插即用验证,它不依赖于任何插件或修改任何文件。它将接受介于1900年1月1日和2999年31月31日之间的任何日期,因此采用美国或英国格式。显然,有一些无效的日期会悄悄过去,但您可以根据自己的需要调整正则表达式。这满足了我的需求,因为它将用于网站的低流量区域,并进行服务器端验证。有问题的站点区域是用ASP.net MVC构建的。

代码语言:javascript
复制
jQuery.validator.methods.date = function(value, element) {
    var dateRegex = /^(0?[1-9]\/|[12]\d\/|3[01]\/){2}(19|20)\d\d$/;
    return this.optional(element) || dateRegex.test(value);
};
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6906725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档