jQuery Validation插件onfocosout/onkeyup出错的解决方法

2013-04-23    分类:前端技术    4人评论0 views

在使用jQuery Validation插件(jquery.validate.js)时,我们会需要在input文本域失去焦点时(即onblur)或者键盘输入时触发针对当前文本域的验证。

根据官方以及网上各类中英文的说明(可以说这个插件的文档资料做的不是很好,没有很系统很规范的API说明),我们发现了onfocusoutonkeyup这两个选项。

查阅了很多博客、问答,大部分的内容都只说了默认值false的情况,少部分的作者想当然的认为开启这个功能即把他设置成true即可,包括我也一样。

因此,错误的用法带来了错误信息,在触发了blur事件后js就弹出错误:

SCRIPT438: 对象不支持“call”属性或方法

在遇到这种冷门错误的时候,中文资料的支持基本上是无望的,这段错误的英文大致应该是:

Object doesn’t support this property or method 也可能是 validator.settings[eventType].call is not a function

最后找到2篇文章validator.settings[eventType].call is not a function以及Using jQuery validate plugin: onfocusout, onkeyup notworking as expected on production site,看起来也有人和我们一样,因为文档不详细而误入歧途,最后作者也说了当时写的Default: true有点误导作用,现在已经改成onfocusout/onkeyup: false, Function

那么总结一下解决方法:

onfocusout/onkeyup的默认值是false,如果需要开启对当前文本域的验证,则应该写成:
onfocusout: function(element) { $(element).valid(); }
onkeyup: function(element) { $(element).valid(); }

最终测试成功,该问题成功解决。此文希望能够对纠结于这个问题的朋友有所帮助。

另外,jQuery Validation这个插件在IE7兼容模式下也存在一个问题,可以看看此文:jQuery Validation 在IE7(兼容模式)下出现“找不到成员”的脚本错误

转载请注明:摩登坊 » jQuery Validation插件onfocosout/onkeyup出错的解决方法

继续查看有关 的文章

3访客评论 ,博主回复1

  1. 非常感谢.最近在看这个插件看了API不知道如何调用验证..原来是用$(elem).valid();谢谢了.

    Troland05-31 18:06
  2. $(element).valid(); 细细测试会提示 $(element).valid(); 这个有问题 ,“对象不支持属性或者方法”

    神话08-23 09:18
  3. 这个感觉是valid方法没有被申明过吧,看看是不是js调用缺少了什么。

    Steve Luo08-26 09:07
  4. 非常感谢 正好用到了

    wlj10-10 12:54

我来说说

*

*

取消