修改jQuery Validation里默认的验证方法
在最近做的一个项目中,使用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的全球化和本地化的说明中有提及。
上一篇: 全国各地的樱桃几月份成熟的呢
下一篇: 百香果吃法有哪些,这样吃爽歪歪!
推荐阅读
-
Web编程入门 2.1 jQuery Validate方法 以及批量验证的修改方法
-
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
-
oracle数据库imp导入失败提示:“不是有效的导出文件, 标头验证失败”解决方法,修改dmp文件里oracle数据库版本号方法
-
修改jQuery Validation里默认的验证方法
-
修改jQuery Validation里默认的验证方法_jquery
-
修改jQuery Validation里默认的验证方法_jquery
-
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法_jquery
-
Jquery validation remote 验证的缓存问题解决方法_jquery
-
修改jquery里的dialog对话框插件为框架页(iframe) 的方法_jquery
-
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法_jquery