jquery validate在ie8下的bug解決方法
更新時(shí)間:2013年11月13日 16:04:20 作者:
項(xiàng)目用到了jquery的表單校驗(yàn)插件validate,但在ie8下有bug,下面有個(gè)不錯(cuò)的解決方法,需要的朋友可以參考下
項(xiàng)目用到了jquery的表單校驗(yàn)插件validate,之前一直都只是做很簡(jiǎn)單的校驗(yàn),沒(méi)有做過(guò)稍微復(fù)雜的應(yīng)用,近期項(xiàng)目對(duì)應(yīng)用的要求提高了,一個(gè)頁(yè)面中有兩個(gè)提交按鈕,然后表單校驗(yàn)是綁定在按鈕的點(diǎn)擊事件上的,如下。
然后很自然的就用到了插件的valid()函數(shù):
這個(gè)確實(shí)能達(dá)到相要的效果,但是在ie8下竟然有問(wèn)題,valid()方法始終返回false,而且所有的字段都會(huì)被當(dāng)成必填字段校驗(yàn),糾結(jié)了好久,因?yàn)閖query的插件代碼都很復(fù)雜,所以剛開(kāi)始看特別費(fèi)勁,后來(lái)一步一步排查,找到問(wèn)題了,問(wèn)題出在attributeRules()函數(shù)上:
這個(gè)函數(shù)的作用是:當(dāng)你把校驗(yàn)規(guī)則寫(xiě)在頁(yè)面上而不是腳本里面時(shí),同樣可以應(yīng)用校驗(yàn)框架。技術(shù)上是很合理的,對(duì)required的處理也是合理的,但是對(duì)于ie8來(lái)說(shuō),就有點(diǎn)問(wèn)題了。ie8會(huì)執(zhí)行以下分支:
所以,所有的字段都會(huì)被當(dāng)成必填字段校驗(yàn)了。經(jīng)過(guò)測(cè)試,最后又兩種方法可以解決:
第一種是在rules()方法里面找到下面這段代碼,注釋掉對(duì)attributeRules()的調(diào)用,之所以可以這樣做,是因?yàn)橐话愫苌贂?huì)把校驗(yàn)寫(xiě)到頁(yè)面中去,當(dāng)然這個(gè)肯定不是最佳解決方案,那就看看第二種。
第二種解決方法需要做兩件事情:首先,需要對(duì)attributeRules()方法做一些修改,把getAttribute()方法換成attr()方法。注意getAttribute()是js方法,而attr()是jquery方法,它們的使用對(duì)象是不一樣的,其實(shí)這樣改完后,ie8下面的bug已經(jīng)解決了,但是ie7下又出現(xiàn)了這種問(wèn)題,所以你要用最新的jquery,我測(cè)試的時(shí)候用的是jquery1.10.2版本。
哦,對(duì)了,最后不要忘記阻止表單的默認(rèn)事件。

然后很自然的就用到了插件的valid()函數(shù):

這個(gè)確實(shí)能達(dá)到相要的效果,但是在ie8下竟然有問(wèn)題,valid()方法始終返回false,而且所有的字段都會(huì)被當(dāng)成必填字段校驗(yàn),糾結(jié)了好久,因?yàn)閖query的插件代碼都很復(fù)雜,所以剛開(kāi)始看特別費(fèi)勁,后來(lái)一步一步排查,找到問(wèn)題了,問(wèn)題出在attributeRules()函數(shù)上:

這個(gè)函數(shù)的作用是:當(dāng)你把校驗(yàn)規(guī)則寫(xiě)在頁(yè)面上而不是腳本里面時(shí),同樣可以應(yīng)用校驗(yàn)框架。技術(shù)上是很合理的,對(duì)required的處理也是合理的,但是對(duì)于ie8來(lái)說(shuō),就有點(diǎn)問(wèn)題了。ie8會(huì)執(zhí)行以下分支:

所以,所有的字段都會(huì)被當(dāng)成必填字段校驗(yàn)了。經(jīng)過(guò)測(cè)試,最后又兩種方法可以解決:
第一種是在rules()方法里面找到下面這段代碼,注釋掉對(duì)attributeRules()的調(diào)用,之所以可以這樣做,是因?yàn)橐话愫苌贂?huì)把校驗(yàn)寫(xiě)到頁(yè)面中去,當(dāng)然這個(gè)肯定不是最佳解決方案,那就看看第二種。

第二種解決方法需要做兩件事情:首先,需要對(duì)attributeRules()方法做一些修改,把getAttribute()方法換成attr()方法。注意getAttribute()是js方法,而attr()是jquery方法,它們的使用對(duì)象是不一樣的,其實(shí)這樣改完后,ie8下面的bug已經(jīng)解決了,但是ie7下又出現(xiàn)了這種問(wèn)題,所以你要用最新的jquery,我測(cè)試的時(shí)候用的是jquery1.10.2版本。

哦,對(duì)了,最后不要忘記阻止表單的默認(rèn)事件。
您可能感興趣的文章:
- JQuery擴(kuò)展插件Validate—6 radio、checkbox、select的驗(yàn)證
- jQuery EasyUI API 中文文檔 - ValidateBox驗(yàn)證框
- jQuery.Validate驗(yàn)證庫(kù)的使用介紹
- Jquery Validate 正則表達(dá)式實(shí)用驗(yàn)證代碼大全
- jquery內(nèi)置驗(yàn)證(validate)使用方法示例(表單驗(yàn)證)
- jquery validate添加自定義驗(yàn)證規(guī)則(驗(yàn)證郵箱 郵政編碼)
- 使用jquery.validate自定義方法實(shí)現(xiàn)"手機(jī)號(hào)碼或者固話至少填寫(xiě)一個(gè)"的邏輯驗(yàn)證
- jQuery驗(yàn)證插件 Validate詳解
- 基于Bootstrap+jQuery.validate實(shí)現(xiàn)Form表單驗(yàn)證
- jQuery插件Validate實(shí)現(xiàn)自定義校驗(yàn)結(jié)果樣式
相關(guān)文章
jquery.multiselect多選下拉框?qū)崿F(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了jquery.multiselect 多選下拉框?qū)崿F(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11jQuery EasyUi 驗(yàn)證功能實(shí)例解析
本文給大家分享jquery easyui驗(yàn)證功能的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2017-01-01jQuery實(shí)現(xiàn)平滑滾動(dòng)到指定錨點(diǎn)的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)平滑滾動(dòng)到指定錨點(diǎn)的方法,實(shí)例分析了jQuery根據(jù)錨點(diǎn)定位滾動(dòng)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03jquery仿蘋(píng)果的時(shí)間/日期選擇效果
本篇文章主要介紹了jquery仿蘋(píng)果的時(shí)間/日期選擇效果的實(shí)例,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03jQuery 動(dòng)態(tài)酷效果實(shí)現(xiàn)總結(jié)
jQuery是一個(gè)優(yōu)秀的JavaScript框架,可以很好的解決不同瀏覽器兼容的問(wèn)題,尤其是在ASP.NET MVC下,它的作用更加的凸顯。2009-12-12jquery實(shí)現(xiàn)簡(jiǎn)單實(shí)用的彈出層效果代碼
這篇文章主要介紹了jquery實(shí)現(xiàn)簡(jiǎn)單實(shí)用的彈出層效果代碼,涉及jquery響應(yīng)鼠標(biāo)事件動(dòng)態(tài)操作頁(yè)面元素屬性的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10input 輸入框獲得/失去焦點(diǎn)時(shí)隱藏/顯示文字(jquery版)
input輸入框在獲得或失去焦點(diǎn)時(shí)隱藏或顯示文字,這樣的焦點(diǎn)效果想必很多朋友在填寫(xiě)form表格的時(shí)候都曾見(jiàn)識(shí)過(guò)吧,本文使用jquery實(shí)現(xiàn)以下,感興趣的朋友可以參考下哈2013-04-04