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 设计模式 富有表现力的Javascript(一)
May 26 Javascript
Jquery获取复选框被选中值的简单方法
Jul 04 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
Nov 21 Javascript
推荐10 款 SVG 动画的 JavaScript 库
Mar 24 Javascript
js实现tab切换效果实例
Sep 16 Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
JS中判断null的方法分析
Nov 21 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
Aug 16 Javascript
angular之ng-template模板加载
Nov 09 Javascript
jQuery擦除插件eraser使用方法详解
Jan 11 jQuery
Vue微信公众号网页分享的示例代码
May 28 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
yii实现级联下拉菜单的方法
2014/07/31 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
两种方法解决javascript url post 特殊字符转义 + & #
2016/04/13 Javascript
Javascript Event(事件)的传播与冒泡
2017/01/23 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python构造函数及解构函数介绍
2015/02/26 Python
简介二分查找算法与相关的Python实现示例
2015/08/26 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
如何使用Python 打印各种三角形
2019/06/28 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
python中的测试框架
2020/11/13 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
PHP如何删除一个Cookie值
2012/11/15 面试题
护士实习生自我鉴定范文
2013/12/10 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
说明书怎么写
2014/05/06 职场文书
大学生赌博检讨书
2014/09/22 职场文书
大学生实训报告总结
2014/11/05 职场文书
2015年小学英语教师工作总结
2015/05/12 职场文书
学校隐患排查制度
2015/08/05 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
英镑符号 £
2022/02/17 杂记