修改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 相关文章推荐
删除重复数据的算法
Nov 23 Javascript
区分JS中的undefined,null,&quot;&quot;,0和false
Mar 08 Javascript
使用Jquery获取带特殊符号的ID 标签的方法
Apr 30 Javascript
javascript实现实时输出当前的时间
Apr 27 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
Nov 24 Javascript
JS组件Bootstrap Select2使用方法解析
May 30 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
Mar 09 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
Sep 03 Javascript
浅谈webpack devtool里的7种SourceMap模式
Jan 14 Javascript
Vue传参一箩筐(页面、组件)
Apr 04 Javascript
vue-router结合vuex实现用户权限控制功能
Nov 14 Javascript
jQuery弹框插件使用方法详解
May 26 jQuery
利用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
如何将数据从文本导入到mysql
2006/10/09 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
php之readdir函数用法实例
2014/11/13 PHP
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
2019/08/13 PHP
一些不错的js函数ajax
2008/08/20 Javascript
读jQuery之十 事件模块概述
2011/06/27 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
js加载之使用DOM方法动态加载Javascript文件
2013/11/08 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
利用node.js如何创建子进程详解
2017/12/09 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
jQuery实现评论模块
2020/08/19 jQuery
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
python中通过预先编译正则表达式提高效率
2017/09/25 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
2020/08/05 Python
python-jwt用户认证食用教学的实现方法
2021/01/19 Python
努比亚手机官网:nubia
2016/10/06 全球购物
澳大利亚制造的蜡烛和扩散器:Glasshouse Fragrances
2018/05/20 全球购物
俄罗斯卫浴采暖及维修用品超级市场:Dkrussia
2020/05/12 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
Servlet如何得到客户端机器的信息
2014/10/17 面试题
财务会计专业个人求职信范本
2014/01/08 职场文书
物理学专业自荐信
2014/06/11 职场文书
货款欠条范本
2015/07/03 职场文书
严以律己学习心得体会
2016/01/13 职场文书
Python采集股票数据并制作可视化柱状图
2022/04/04 Python
JS前端监控采集用户行为的N种姿势
2022/07/23 Javascript