JQuery - слишком много рекурсии - if.clause

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

подчеркнуто, почему?

Теги:
if-statement
events
submit

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")
        }
    });
});
  • 0
    да, теперь это работает, ты идеален
0

Вы не должны называть $("#submit").submit() чтобы разрешить подчинение, это приводит к тому, что обработчик будет вызываться снова и снова. Вместо этого вы должны переместить preventDefault() после предупреждения об ошибке() и вернуть true вместо вызова submit().

Ещё вопросы

Сообщество Overcoder
Наверх
Меню