修改jQuery Validation里默认的验证方法

 更新时间:2012年02月14日 21:20:59   作者:  
在最近做的一个项目中,使用jQuery Validation验证日期,遇到的问题和一个没有预料到的情况是,在ASP.NET MVC 3的项目中,对于 input type="date" data-val="true"的元素,如果调用form的valid方法验证form,虽然我没有添加日期验证的设置
在最近做的一个项目中,使用jQuery Validation验证日期,遇到的问题和一个没有预料到的情况是,在ASP.NET MVC 3的项目中,对于 <input type="date" data-val="true" />的元素,如果调用form的valid方法验证form,虽然我没有添加日期验证的设置,仅仅type="date",但其依然调用了日期验证逻辑来验证日期格式是否正确。这本来是个不错的行为,但问题在于,其支持的日期格式有限,阅读jQuery Validation的代码会知道(当然,文档中也有说明),对于“date”,日期验证只是利用Javascript内置的处理来验证,反映到代码里,就是看new Date(日期字符串)能否成功。在我的电脑中,输入日期"9/5/2012"可以验证通过,但“2012-9-5”验证失败,后者显然也是一种正确的格式。我需要改变或者改善这种行为。如何做?

当然,我们可以修改jQuery Validation的源代码,但是首先,我引用的是CDN上的代码,其次,作为一个public的库,我想还是尽量不要自己去改动,日久天长,可能我们已经忘记了对它的修改,而官方更新新版本时,我们弄下来更新,结果就把我们自己的修改给覆盖了。更好的办法,是打补丁,从外部把date的验证函数替换成我们自己的。这里或许要感谢Javascript的OO还不是那么彻底,并没有把那些内置验证方法整成protected/private,看了源代码之后,替换的方法很简单,在引用jQuery Validation的源码之后,再这样替换:

复制代码 代码如下:

$.validator.methods.date = function (value, element)
{
// Date.parse函数源自另外一个处理日期的库
return this.optional(element) || Date.parse(value) != null;
};

此外替换默认的message,也可以用同样的办法,比如:
复制代码 代码如下:

$.validator.messages.date = "hey, you entered an invalid date"

当然,处理messages有其他支持的更好的办法,这在jQuery Validation的全球化和本地化的说明中有提及。

相关文章

  • jQuery的ajax下载blob文件

    jQuery的ajax下载blob文件

    这篇文章主要介绍了jQuery的ajax下载blob文件的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • jquery实现Ctrl+Enter提交表单的方法

    jquery实现Ctrl+Enter提交表单的方法

    这篇文章主要介绍了jquery实现Ctrl+Enter提交表单的方法,涉及jquery针对键盘按键的响应与表单操作相关技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • jQuery前台数据获取实现代码

    jQuery前台数据获取实现代码

    jQuery前台数据获取实现代码,需要的朋友可以参考下。
    2011-03-03
  • 两种方法基于jQuery实现IE浏览器兼容placeholder效果

    两种方法基于jQuery实现IE浏览器兼容placeholder效果

    这篇文章主要介绍了两种方法基于jQuery实现IE浏览器兼容placeholder效果,需要的朋友可以参考下
    2014-10-10
  • Jquery使用Firefox FireBug插件调试Ajax步骤讲解

    Jquery使用Firefox FireBug插件调试Ajax步骤讲解

    本文介绍Jquery下的Ajax调试方法,Jquery Ajax 提供了全功能的 $.ajax() 方法,还有诸如 $.get(),$.getScript(),$.getJSON(),$.post() 和 $().load() 等更为简便的方法
    2013-12-12
  • jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)

    jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)

    这篇文章主要介绍了jQuery获取访问者IP地址的方法,实例分析了jQuery基于新浪API与QQ查询接口获取来访者IP的相关参数传递与数据处理技巧,需要的朋友可以参考下
    2016-05-05
  • 如何选择jQuery版本 1.x? 2.x? 3.x?

    如何选择jQuery版本 1.x? 2.x? 3.x?

    这篇文章主要给大家介绍了关于如何选择jQuery版本,是1.x? 2.x?还是3.x? 在选择使用jquery之前我们常常会考虑jQuery应该选择什么版本?现在jquery一般用什么版本以及jquery ie8的兼容版本和jquery什么版本稳定等问题,下面通过这篇文章来看看详细的介绍吧。
    2017-04-04
  • jquery实现的动态回到顶部特效代码

    jquery实现的动态回到顶部特效代码

    这篇文章主要介绍了jquery实现的动态回到顶部特效代码,涉及jQuery基于时间函数的定时递归调用实现带缓冲效果的移动功能,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Jquery zTree 树控件异步加载操作

    Jquery zTree 树控件异步加载操作

    这篇文章主要介绍了Jquery zTree 树控件异步加载操作,学习Jquery zTree异步加载,zTree实现一套能完成大部分常用功能的 Tree插件,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • jQuery中DOM 属性使用实例详解上篇

    jQuery中DOM 属性使用实例详解上篇

    这篇文章主要为大家介绍了jQuery中DOM 属性使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论