修改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 相关文章推荐
能说明你的Javascript技术很烂的五个原因分析
Oct 28 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
Jul 17 Javascript
利用jquery写的左右轮播图特效
Feb 12 Javascript
在JavaScript中构建ArrayList示例代码
Sep 17 Javascript
Web打印解决方案之证件套打的实现思路
Aug 29 Javascript
轻松理解JavaScript闭包
Mar 14 Javascript
利用JS实现一个同Excel表现的智能填充算法
Aug 13 Javascript
创建Vue项目以及引入Iview的方法示例
Dec 03 Javascript
了解JavaScript中的选择器
May 24 Javascript
使用axios请求接口,几种content-type的区别详解
Oct 29 Javascript
Vue toFixed保留两位小数的3种方式
Oct 23 Javascript
微信小程序实现通讯录列表展开收起
Nov 18 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 危险函数全解析
2009/09/09 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
PHP数据过滤的方法
2013/10/30 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
struts2 jquery 打造无限层次的树
2009/10/23 Javascript
javascript 单例/单体模式(Singleton)
2011/04/07 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
详解AngularJS中的作用域
2015/06/17 Javascript
JavaScript 函数模式详解及示例
2016/09/07 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
老生常谈python函数参数的区别(必看篇)
2017/05/29 Python
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
python元组的概念知识点
2019/11/19 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
python多进程下的生产者和消费者模型
2020/05/07 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
详解CSS3浏览器兼容
2016/12/14 HTML / CSS
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
机电一体化大学生求职信
2013/11/08 职场文书
关于感恩的演讲稿800字
2014/08/26 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
教师节主持词开场白
2015/05/29 职场文书
初中班主任心得体会
2016/01/07 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
如何用python绘制雷达图
2021/04/24 Python