jquery formvalidator插件是不錯的國產驗證插件了,做點普通的校驗也是很方便的,但最近遇到個問題,發現如果表單整個表單是AJAX提交時,就不能按傳統的做法了,比如:
. 代碼如下:
$ajax.post("...............")
$.formValidator.initConfig({formID:"applyForm",onError:function(msg){alert(msg)}});
$("#reason").formValidator().inputValidator({min:1,onErrorMin:'請輸入申請內容及原因'});
很遺憾,單這樣是達不到AJAX FORM提交並同時用formvalidator校驗的效果的。如果要同時使用formvalidator和ajax提交一起的話,首先看到的是formvalidtor手冊中關於ajaxform的用法
. 代碼如下:
$.formValidator.initConfig({theme:"Default",submitOnce:true,formID:"form1",ajaxForm:{
dataType : "html",
buttons:$("#button"),
url: "http://www.51gh.net/chkuser.aspx?act=ok"
},
onError:function(msg,obj,errorlist){
$("#errorlist").empty();
$.map(errorlist,function(msg){
$("#errorlist").append("[*]" + msg + "
")
});
alert(msg);
},
submitAfterAjaxPrompt : '有數據正在異步驗證,請稍等...'
});
看了下,這個方法看上去是可以的,但實際上,居然對中文支持不好,我的是
struts2,spring 3,tomcat也是用utf-8,sturts2等全部用UTF-8編碼了,但居然還是說當取的
struts2的中文值的時候,說:
org.apache.tomcat.util.http.Parameters processParameters
警告: Parameters: Character decoding failed. Parameter skipped.
java.io.CharConversionException: isHexDigit.
解決方式見:
http://www.iteye.com/problems/7099
但這個問題很奇怪,而且感覺用formvalidtor本身的方法太麻煩,所以就找了另外的方法,果然好用,那就是使用
. 代碼如下:
if ($.formValidator.pageIsValid('1')==true)
{
$.post("xxxxxxxxxxxxxxxxx")
}
其他校驗規則照樣寫,如果頁面只有一個表單,則默認為1,這裡的pageIsValid,是校驗這個組的控件所有都通過校驗了,就繼續做某事,你看,這樣就簡單多了