在表单验证的时候,会遇到一些跟后台action做交互的情况,可采用ajaxValidator的方式代替一般jquery使用的ajax提交方式:
$("#test1")
.formValidator({onshow:"请输入用户名,只有输入/"maodong/"才是对的",onfocus:"用户名至少6个字符,最多10个字符",oncorrect:"该用户名可以注册"})
.inputValidator({min:6,max:10,onerror:"你输入的用户名非法,请确认"})
.regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"})
.ajaxValidator({
type : "post",
url : "mytest.action",
datatype : "json",
success : function(data){
if( data == "1" )
{
return true;
}
else
{
return false;
}
},
buttons: $("#button"),
error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
onerror : "该用户名不可用,请更换用户名",
onwait : "正在对用户名进行合法性校验,请稍候..."
});
随即而来的是中文乱码的问题。在网上搜索了一把,可采取暴力修改formValidator.js的方式来解决:
修改源码:
formValidator.js
//ajax校验
ajaxValid : function(returnObj)的方法中
将
var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(srcjo.val());
改为:
var parm = "clientid="+id+"&"+id+"="+encodeURIComponent(encodeURIComponent(srcjo.val()));
因为只有通过前台两次编码,后台一次解码就可以解决乱码问题
thename=java.net.URLDecoder.decode(thename,"UTF-8");