jquery.form.js beforeSubmit失效问题。

引用jquery.form.js     ajaxsubmit 来提交form表单,回自动提交表单中所有数据,根据name匹配。

初始代码如下:

//验证注册
function validateRegist(){
	if($("#registerEmail").val().trim() == ""){
		floatLayer("请输入email");
		return false;
	};
}

function registNew(){
	var optionsNew = {
		beforeSubmit: validateRegist(),
		url : $("#ctx").val() + "/register/create",
		success : function(response) {
			if(response.isSuccess == "true"){
				floatLayer("注册成功,请您登录系统。");
				//window.location.href = window.location.href.replace(/#/g,'');
			}else{
				floatLayer(response.msg);
			}
		},
		error : function(){
			alert(JSON.stringify(response));
		},
		type : "post",
		clearForm : false,
		timeout : 100000
	};
	$("#register").ajaxSubmit(optionsNew);// type="button"
};
但是,无论validateRegister()方法返回值为,true或者false,ajaxSubmit都能提交。

修改代码如下来进行测试。

直接吧beforeSubmit : false,

function registNew(){
	var optionsNew = {
		beforeSubmit: false,
		url : $("#ctx").val() + "/register/create",
		success : function(response) {},
		error : function(){},
		type : "post",
		clearForm : false,
		timeout : 100000
	};
	$("#register").ajaxSubmit(optionsNew);// type="button"
};

表单能提交。


修改为如下代码。

function registNew(){
	var optionsNew = {
		beforeSubmit: function(){
			return false;
		},
		url : $("#ctx").val() + "/register/create",
		success : function(response) {},
		error : function(){},
		type : "post",
		clearForm : false,
		timeout : 100000
	};
	$("#register").ajaxSubmit(optionsNew);// type="button"
};

ajaxSubmit方法不能提交。    成功。


也就是说,beformSubmit后,必须跟方法体,而不是跟方法返回值。

比如方法   validate();

需要写  beforeSubmit : validate,

而不是  beforeSubmit : validate(),

第一种是,指定某个方法。

第二种是,执行某个方法。


因此,也可以理解为啥直接 配置 beforeSubmit : false,不能成功的原因了。

function validate (){

return false ;

}

如果你  alert(validate );

则会输出整个方法,

而你alert(validate());

则会输出 false.

差别应该就在这个地方。

最后成功的代码如下:

function registNew(){
	var optionsNew = {
		beforeSubmit: validateRegist,
		url : $("#ctx").val() + "/register/create",
		success : function(response) {
			if(response.isSuccess == "true"){
				floatLayer("注册成功,请您登录系统。");
				//window.location.href = window.location.href.replace(/#/g,'');
			}else{
				floatLayer(response.msg);
			}
		},
		error : function(){
			alert(JSON.stringify(response));
		},
		type : "post",
		clearForm : false,
		timeout : 100000
	};
	$("#register").ajaxSubmit(optionsNew);// type="button"
};



下面是jquery.form.js的  beforeSubmit 的源码:

// give pre-submit callback an opportunity to abort the submit
        if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
            log('ajaxSubmit: submit aborted via beforeSubmit callback');
            return this;
        }



上一篇:WebService应用:音乐站图片上传


下一篇:嵌入式Linux之我行——ARM MMU工作原理剖析【转】