jQuery]使用jQuery.Validate進行客戶端驗證(高級篇-下)——不使用微軟驗證控件的理由
繼續(xù)上一篇文章使用jQuery.Validate進行客戶端驗證(高級篇-上) ,本文將繼續(xù)介紹jQuery.Validate的高級應(yīng)用——jQuery.Validate的AJAX驗證及簡單擴展。
今天主要介紹的內(nèi)容有:
1、如何使用jQuery.Validate進行AJAX驗證?
2、默認jQuery.Validate在進行AJAX驗證時返回必須是bool類型,如何返回一個對象包括錯誤消息及驗證結(jié)果?
3、在反復(fù)使用jQuery.Validate進行AJAX驗證時,總是需要編寫相關(guān)AJAX參數(shù),可否進行進一步封裝?
第一點:如何使用jQuery.Validate進行AJAX驗證?(具體見High-2.aspx)
jQuery.Validate為我們提供了一個方便的AJAX驗證方式(封裝了jQuery的AJAX,同時將jQuery的AJAX和jQuery.Validate的驗證很好的結(jié)合在一起),在此我僅僅介紹jQuery.Validate在ASP.NET下如何進行AJAX驗證,PHP、JSP等請查看官方例子。
我是采用jQuery.Validate+WebService進行AJAX驗證,客戶端編寫jQuery.Validate的remote驗證屬性,服務(wù)器端采用WebSerice進行接收參數(shù)進行驗證。
首先來看下jQuery.Validate的remote屬性如何編寫AJAX驗證規(guī)則:
view sourceprint?01 function InitRules() { opts = { rules: { <%=txtUid.UniqueID %>: { required: true, remote:{ type: "POST", async: false, url: "WebService.asmx/CheckUid", dataType: "xml", data: {uid:function(){ return jQuery("#<%=txtUid.ClientID %>").val();}} } } } } }
如果使用過jQuery.ajax的朋友肯定會很熟悉這段代碼,jQuery.Validate的remote采用和jQuery.ajax相同的參數(shù)設(shè)置(原因就上面所說的封裝了jQuery.ajax的原因)。
這邊來詳細講解下jQuery.Validate的remote的一些知識:
1、jQuery.Validate的remote默認可以直接填寫遠程驗證的地址,格式為:remote:”validate.aspx”,但是很多情況下這個遠程驗證需要提交參數(shù)、返回類型等限制,所以就可以采用在“{}”中編寫具體屬性的方式來包裝提交參數(shù)。
2、jQuery.Validate的remote官方代碼中,遠程的輸出只能是true或者false,不允許有其他輸出,這個我覺得不太好,具體的擴展在后面我會講到。
3、jQuery.Validate的remote在使用時如果想提交參數(shù)需要以JSON的方式提交格式如下:
view sourceprint?1 data: { uid:function(){ return jQuery("#<%=txtUid.ClientID %>").val(); } }
此處肯定會有人不明白,為什么參數(shù)需要以function的形式提交,而不是直接寫jQuery("#<%=txtUid.ClientID %>").val();
這里我要說明的是:jQuery.Validate的驗證規(guī)則是在頁面加載的時候就已經(jīng)被加載了的,如果還是像以往一樣直接寫"jQuery("#<%=txtUid.ClientID %>").val();",那么驗證的時候提交給服務(wù)器端的數(shù)據(jù)永遠是頁面加載時txtUid控件的值。
而使用function的好處就是在頁面加載的時候僅僅告訴jQuery.Validate,在控件需要進行remote驗證的時候需要調(diào)用function這個函數(shù),這樣就保證了在執(zhí)行remote驗證的時候可以獲取到最新的值
出處:博客園
責(zé)任編輯:bluehearts
上一頁 下一頁 使用jQuery.Validate進行客戶端驗證(后篇) 下 [2]
◎進入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|