jquery validate在ie8下的bug解决方法


Posted in Javascript onNovember 13, 2013

项目用到了jquery的表单校验插件validate,之前一直都只是做很简单的校验,没有做过稍微复杂的应用,近期项目对应用的要求提高了,一个页面中有两个提交按钮,然后表单校验是绑定在按钮的点击事件上的,如下。
jquery validate在ie8下的bug解决方法 
然后很自然的就用到了插件的valid()函数:
jquery validate在ie8下的bug解决方法 
这个确实能达到相要的效果,但是在ie8下竟然有问题,valid()方法始终返回false,而且所有的字段都会被当成必填字段校验,纠结了好久,因为jquery的插件代码都很复杂,所以刚开始看特别费劲,后来一步一步排查,找到问题了,问题出在attributeRules()函数上:
jquery validate在ie8下的bug解决方法 
这个函数的作用是:当你把校验规则写在页面上而不是脚本里面时,同样可以应用校验框架。技术上是很合理的,对required的处理也是合理的,但是对于ie8来说,就有点问题了。ie8会执行以下分支:
jquery validate在ie8下的bug解决方法 
所以,所有的字段都会被当成必填字段校验了。经过测试,最后又两种方法可以解决:

第一种是在rules()方法里面找到下面这段代码,注释掉对attributeRules()的调用,之所以可以这样做,是因为一般很少会把校验写到页面中去,当然这个肯定不是最佳解决方案,那就看看第二种。
jquery validate在ie8下的bug解决方法 
第二种解决方法需要做两件事情:首先,需要对attributeRules()方法做一些修改,把getAttribute()方法换成attr()方法。注意getAttribute()是js方法,而attr()是jquery方法,它们的使用对象是不一样的,其实这样改完后,ie8下面的bug已经解决了,但是ie7下又出现了这种问题,所以你要用最新的jquery,我测试的时候用的是jquery1.10.2版本。
jquery validate在ie8下的bug解决方法 
哦,对了,最后不要忘记阻止表单的默认事件。

Javascript 相关文章推荐
Javascript MD4
Dec 20 Javascript
[转]JS宝典学习笔记
Feb 07 Javascript
统计出现最多的字符次数的js代码
Dec 03 Javascript
javascript中的关于类型转换的性能优化
Dec 14 Javascript
选择器中含有空格在使用示例及注意事项
Jul 31 Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 Javascript
jQuery简单入门示例之用户校验demo示例
Jul 09 Javascript
Bootstrap 布局组件(全)
Jul 18 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
Mar 03 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 Javascript
vue实现匀速轮播效果
Jun 29 Javascript
JQuery伸缩导航练习示例
Nov 13 #Javascript
JS:window.onload的使用介绍
Nov 13 #Javascript
JQuery each打印JS对象的方法
Nov 13 #Javascript
Jquery 数组操作大全个人总结
Nov 13 #Javascript
JS保存和删除cookie操作 判断cookie是否存在
Nov 13 #Javascript
js 判断上传文件大小及格式代码
Nov 13 #Javascript
php跨域调用json的例子
Nov 13 #Javascript
You might like
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
输入值/表单提交参数过滤有效防止sql注入的方法
2013/12/25 PHP
smarty缓存用法分析
2014/12/16 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
javascript中将Object转换为String函数代码 (json str)
2012/04/29 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
基于javascript实现句子翻牌网页版小游戏
2016/03/23 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
vue组件学习教程
2017/09/09 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
pandas数据清洗,排序,索引设置,数据选取方法
2018/05/18 Python
pytorch对可变长度序列的处理方法详解
2018/12/08 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
由面试题加深对Django的认识理解
2019/07/19 Python
Python Subprocess模块原理及实例
2019/08/26 Python
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
2014年财务科工作总结
2014/11/11 职场文书
护士个人年终总结
2015/02/13 职场文书