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中的作用域和上下文使用简要概述
Dec 05 Javascript
jQuery实现折线图的方法
Feb 28 Javascript
JavaScript基本语法讲解
Jun 03 Javascript
javascript拖拽效果延伸学习
Apr 04 Javascript
jquery 遍历数组 each 方法详解
May 25 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
javascript 判断页面访问方式电脑或者移动端
Sep 19 Javascript
JS实现Ajax的方法分析
Dec 20 Javascript
JS实现的RGB网页颜色在线取色器完整实例
Dec 21 Javascript
jquery实现页面加载效果
Feb 21 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
Apr 29 Javascript
jQuery实现点击滚动到指定元素上的方法分析
Mar 19 jQuery
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
用文本文件制作留言板提示(下)
2006/10/09 PHP
浅析php工厂模式
2014/11/25 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
关于vue.js v-bind 的一些理解和思考
2017/06/06 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
vue+axios+promise实际开发用法详解
2018/10/15 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
python打开文件并获取文件相关属性的方法
2015/04/23 Python
Python实现最大子序和的方法示例
2019/07/05 Python
使用python实现对元素的长截图功能
2019/11/14 Python
PyTorch预训练Bert模型的示例
2020/11/17 Python
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
syb养殖创业计划书
2014/01/09 职场文书
《草原》教学反思
2014/02/15 职场文书
给小学生的新年寄语
2014/04/04 职场文书
怎样写离婚协议书
2014/09/10 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
2016年感恩教师节校园广播稿
2015/12/18 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书