手机版

jquery验证ie8下的bug解决方案

时间:2021-11-14 来源:互联网 编辑:宝哥软件园 浏览:

Jquery的表单验证插件validate已经在项目中使用。之前只是简单的验证,并不是稍微复杂的应用。最近,项目的应用要求有所提高。一个页面有两个提交按钮,然后表单验证绑定到按钮的点击事件,如下图所示。

那么自然要使用插件的valid()函数:

这确实可以达到预期的效果,但是ie8下有一个问题。valid()方法总是返回false,并且所有字段都将被检查为必填字段。纠结了很久。因为jquery的插件代码非常复杂,所以一开始很难看到。后来经过一步一步的检查,发现了问题。问题出在attributeRules()函数上:

功能是:当您在页面上而不是在脚本中编写检查规则时,您也可以应用检查框架。技术上很合理,所需的处理也很合理,但是对于ie8来说,存在一些问题。Ie8将执行以下分支:

因此,所有字段都将被选为必填字段。经过测试,最终有两个解决方案:第一个是在rules()方法中找到以下代码,并注释掉对attributeRules()的调用。之所以能做到这一点,是因为验证很少写在页面上。当然,这肯定不是最好的解决方案,所以看看第二个。

第二个解决方案需要做两件事:第一,需要对attributeRules()方法做一些修改,用Attr()方法替换getattribute()方法。注意getAttribute()是js方法,而attr()是jquery方法,它们的使用对象是不同的。其实经过这次修改,ie8下的bug已经解决了,但是ie7下出现了这个问题,所以应该使用最新的jquery。我在测试时使用了jquery 1 . 10 . 2版本。

哦,是的,最后,别忘了阻止表单的默认事件。

版权声明:jquery验证ie8下的bug解决方案是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。