修改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
Jun 05 Javascript
jquery 操作DOM的基本用法分享
Apr 05 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 Javascript
js substring从右边获取指定长度字符串(示例代码)
Dec 23 Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 Javascript
jquery.cookie.js用法实例详解
Dec 25 Javascript
React组件的三种写法总结
Jan 12 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 Javascript
angularjs路由传值$routeParams详解
Sep 05 Javascript
JavaScript常用截取字符串的三种方式用法区别实例解析
May 15 Javascript
ES6 系列之 WeakMap的使用示例
Aug 06 Javascript
详解vue2.0模拟后台json数据
May 16 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
在WIN98下以apache模块方式安装php
2006/10/09 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
BootStrap导航栏问题记录
2017/07/31 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
浅谈React高阶组件
2018/03/28 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Python装饰器基础概念与用法详解
2018/12/22 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
HTML5有哪些新特征
2015/12/01 HTML / CSS
阿联酋航空假期:Emirates Holidays
2018/03/20 全球购物
法制宣传教育方案
2014/05/09 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
个人自荐书怎么写
2015/03/26 职场文书
2015年打非治违工作总结
2015/04/02 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
亮剑观后感
2015/06/05 职场文书
python 实现定时任务的四种方式
2021/04/01 Python