0

在触发提交操作之前,我正在做一些检查:

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

e.preventDefault();

var check = $("#check").val();

        if(check == 1) {
            $("#submit").submit();
        } else {
            alert"input-hidden value is wrong")
        }

}

});
});

所以我正在检查输入隐藏值的值是否设置为 1。

如果是,则应处理表单操作,但我收到此错误:

too much recursion

有人可以帮忙吗?

编辑:

在这一行:

$("#submit").submit();

这部分:

#submit

有下划线,为什么?

4

2 回答 2

2

这是因为$("#submit").submit();再次调用会触发提交事件,该事件将再次调用提交处理程序,从而创建无限递归循环...调用 dom 元素提交方法,而不是像this.submit()

或仅在值无效时使用 preventDefault() 否则允许默认操作继续

$(document).ready(function () {
    $("#submit").submit(function (e) {
        var check = $("#check").val();
        if (check != 1) {
            e.preventDefault();
            alert("input-hidden value is wrong")
        }
    });
});
于 2013-12-14T12:53:01.753 回答
0

您不应该调用$("#submit").submit()以允许提交发生,这会导致您的处理程序被一遍又一遍地调用。相反,您应该preventDefault()在错误 alert() 之后移动并返回 true 而不是调用 submit()。

于 2013-12-14T12:54:25.070 回答