修改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 相关文章推荐
基于json的jquery地区联动效果代码
Jul 06 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
Dec 08 Javascript
js截取字符串的两种方法及区别详解
Nov 05 Javascript
javascript将相对路径转绝对路径示例
Mar 14 Javascript
JavaScript在IE和FF下的兼容性问题
May 19 Javascript
JS常用表单验证方法总结
May 22 Javascript
JavaSacript中charCodeAt()方法的使用详解
Jun 05 Javascript
js输出数据精确到小数点后n位代码
Jul 02 Javascript
JavaScript 身份证号有效验证详解及实例代码
Oct 20 Javascript
AngularJS中的Promise详细介绍及实例代码
Dec 13 Javascript
微信小程序实现写入读取缓存详解
Aug 30 Javascript
详解微信小程序(Taro)手动埋点和自动埋点的实现
Mar 02 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
获得Google PR值的PHP代码
2007/01/28 PHP
PHP 文件上传功能实现代码
2009/06/24 PHP
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
php flush无效,IIS7下php实时输出的方法
2016/08/25 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
js处理表格对table进行修饰
2014/05/26 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
Angular实现form自动布局
2016/01/28 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
JS验证字符串功能
2017/02/22 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
python实现在sqlite动态创建表的方法
2015/05/08 Python
Django中使用group_by的方法
2015/05/26 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
Python探索之SocketServer详解
2017/10/28 Python
Python简单读取json文件功能示例
2017/11/30 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
python爬虫刷访问量 2019 7月
2019/08/01 Python
python使用 request 发送表单数据操作示例
2019/09/25 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
Python是怎样处理json模块的
2020/07/16 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
校长岗位职责
2013/11/26 职场文书
《月光曲》教学反思
2016/02/16 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书