if子句导致“太多递归错误”?

时间:2013-12-23 16:19:07

标签: jquery performance

在将表单提交给php之前,我正在进行jquery检查:

$(document).ready(function(){
    $("#submit").submit(function(e){

    var vari1 = $("#inputhidden1").val();
    var vari2 = $("#inputhidden2").val();


    if(vari1 == 1) {
        if(vari2 == 1) {
            $("#submit").submit();
        } else {
            e.preventDefault();
        }
    } else {
        e.preventDefault();
    }

  });
});

如果每个if子句返回TRUE,则应正常处理表单操作,但是: 相反,我的浏览器崩溃,控制台告诉我:

to much recursion..

有人可以帮助我吗?

问候

1 个答案:

答案 0 :(得分:2)

仅在检查后提交表单,如果错误返回false,则返回true。返回false将取消表单的提交。

$(document).ready(function(){
    $("#submit").submit(function(e){

    var vari1 = $("#inputhidden1").val();
    var vari2 = $("#inputhidden2").val();


    if(vari1 == 1) {
        if(vari2 == 1) {
            return true; // ok, submit
        }
    }
    return false; // error, cancel submit

  });
});

为了使这个更小,你可以做

$(document).ready(function(){
    $("#submit").submit(function(e){

    var vari1 = $("#inputhidden1").val();
    var vari2 = $("#inputhidden2").val();

    return (vari1 == 1 && vari2 == 1);

  });
});

修改

你错了。

调用$("#submit").submit();只是触发提交事件,因为您的表单检查在此事件中,您不需要调用submit(),您已经在提交内。您需要做的是return true实际上“发送”提交,return false取消提交。

阅读本页http://api.jquery.com/submit/