formvalidator4.1.3 - 校验时不能自定义向后台传值的BUG问题

需求如下:
用户名:<input type="text" name="reguser.username" id="username">


用户名可以是 中文、英文及数字。

正确的代码如下 (重点注意第七行的data传值)
$("#username").formValidator({onShow:"请输入用户名,汉字、英文字母、数字,4-20个字符!",onFocus:"请您记住填写的用户名,以后登录时需要用到。",onCorrect:"该用户名可以注册!"})
		.inputValidator({min:4,max:20,onError:"用户名长度不对,请重新输入!"})
	    .ajaxValidator({
			dataType : "html",
			async : true,
			type : 'post',
			data:{'usera':function(){return $("#username").val()}}, 
			url: "usercheckusername.html" ,
			success : function(data, textStatus){
				if(data.indexOf("true")>-1){return true;}
				if(data.indexOf("false")>-1){return "该用户名不可用,请更换用户名";}
				return "服务器没有返回数据,可能服务器忙,请重试"
			},
			error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");},
			onerror : "该用户名已经存在,请更换用户名",
			onwait : "正在对用户名进行合法性校验,请稍候…"
		});


问题:
本来不加data时, 只要输中文的时候(不管type是get还是post),在chrome和IE浏览器下,后台就接收不到reguser.getUsername的值,报null。(火孤倒是都正常的)

于是想到用url带参的方式来传值
即:url: "usercheckusername.html?username="+$("#username").val() ,
但后台依然接收不到数据。

转而想到用data属性传值
即:data:'usera='+ $("#username").val(),
但发现后台接收到usera的值,依然为空。(如果不用该校验框架,这么写肯定没错的。)

随即去网上查阅了很多资料,不知道这里是不是一个BUG,改为
data:{'usera':function(){return $("#username").val()}},
就可以了,而type:'post'是因为有中文,用get得自己转码,不然会乱码。

------------------------
后记:不知道这是不是formvalidator4.1.3版本的问题,还是所有的formvalidator都有此问题。


猜你喜欢

转载自angelbill3.iteye.com/blog/1859817