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


Posted in Javascript onFebruary 14, 2012

在最近做的一个项目中,使用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的全球化和本地化的说明中有提及。
Javascript 相关文章推荐
js导入导出excel(实例代码)
Nov 25 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
May 11 Javascript
JavaScript常用函数工具集:lao-utils
Mar 01 Javascript
谈一谈JS消息机制和事件机制的理解
Apr 14 Javascript
Angular 页面跳转时传参问题
Aug 01 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
JS实现touch 点击滑动轮播实例代码
Jan 19 Javascript
对于Javascript 执行上下文的全面了解
Sep 05 Javascript
webpack之引入图片的实现及问题
Oct 08 Javascript
vue-router路由模式详解(小结)
Aug 26 Javascript
Bootstrap table 服务器端分页功能实现方法示例
Jun 01 Javascript
关于vue的列表图片选中打钩操作
Sep 09 Javascript
利用jquery的获取JS文件中的字符串内容
Feb 14 #Javascript
js 金额文本框实现代码
Feb 14 #Javascript
jQuery UI Autocomplete 体验分享
Feb 14 #Javascript
JavaScript/jQuery 表单美化插件小结
Feb 14 #Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
Feb 13 #Javascript
情人节之礼 js项链效果
Feb 13 #Javascript
jQuery.getScript加载同域JS的代码
Feb 13 #Javascript
You might like
php流量统计功能的实现代码
2012/09/29 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
Javascript 刷新全集常用代码
2009/11/22 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
2019/05/31 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
Python3使用requests发闪存的方法
2016/05/11 Python
zookeeper python接口实例详解
2018/01/18 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
详解python中的数据类型和控制流
2019/08/08 Python
Python-for循环的内部机制
2020/06/12 Python
Python3开发环境搭建详细教程
2020/06/18 Python
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
前处理班长职位说明书
2014/03/01 职场文书
公证书样本
2014/04/10 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
小学数学教学随笔
2015/08/14 职场文书
2016大学军训心得体会
2016/01/11 职场文书