修改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 相关文章推荐
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
Aug 14 Javascript
CSS(js)限制页面显示的文本字符长度
Dec 27 Javascript
jQuery DOM插入节点操作指南
Mar 03 Javascript
zTree插件下拉树使用入门教程
Apr 11 Javascript
JS实现获取剪贴板内容的方法
Jun 21 Javascript
JS实现太极旋转思路分析
Dec 09 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
Mar 25 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
Vue header组件开发详解
Jan 26 Javascript
浅谈PDF.js使用心得
Jun 07 Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 Javascript
vue 实现图片懒加载功能
Dec 31 Vue.js
利用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中的Traits
2015/07/29 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
一个JavaScript处理textarea中的字符成每一行实例
2014/09/22 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
vue制作加载更多功能的正确打开方式
2016/10/12 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
nodejs中用npm初始化来创建package.json的实例讲解
2018/10/10 NodeJs
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
vue实现评价星星功能
2020/06/30 Javascript
python使用urlparse分析网址中域名的方法
2015/04/15 Python
浅析Python函数式编程
2018/10/06 Python
Python实现结构体代码实例
2020/02/10 Python
Python如何基于Tesseract实现识别文字功能
2020/06/05 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
django rest framework 自定义返回方式
2020/07/12 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
文秘专业个人求职信
2013/12/22 职场文书
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
户外婚礼策划方案
2014/02/08 职场文书
企业标语口号
2014/06/10 职场文书
商场周年庆活动方案
2014/08/19 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
Win2008系统搭建DHCP服务器
2022/06/25 Servers