jquery.form.js beforeSubmit失效问题。

    xiaoxiao2026-03-13  5

    引用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; } 相关资源:python入门教程(PDF版)
    最新回复(0)