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用户自定义类的类名称的代码
Mar 08 Javascript
JavaScript限定复选框的选择个数示例代码
Aug 25 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
js中判断用户输入的值是否为空的简单实例
Dec 23 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
Oct 14 Javascript
Bootstrap表单Form全面解析
Jun 13 Javascript
javascript超过容器后显示省略号效果的方法(兼容一行或者多行)
Jul 14 Javascript
JS中使用mailto实现将用户在网页中输入的内容传递到本地邮件客户端
Oct 08 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
vue使用v-for实现hover点击效果
Sep 29 Javascript
JavaScript实现串行请求的示例代码
Sep 14 Javascript
js实现随机点名功能
Dec 23 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
php5数字型字符串加解密代码
2008/04/24 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
js Function类型
2011/12/04 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
Easyui Tree获取当前选择节点的所有顶级父节点
2017/02/14 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
webstrom Debug 调试vue项目的方法步骤
2018/07/17 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
[48:12]Secret vs Optic Supermajor 胜者组 BO3 第三场 6.4
2018/06/05 DOTA
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Python实现可自定义大小的截屏功能
2018/01/20 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
2018/06/04 Python
对python requests的content和text方法的区别详解
2018/10/11 Python
python从子线程中获得返回值的方法
2019/01/30 Python
利用python求积分的实例
2019/07/03 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
工程管理英文求职信
2014/03/18 职场文书
基层党员公开承诺书
2014/05/29 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
中国合伙人观后感
2015/06/02 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers