引用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" };
// 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; }