Как остановить отправку формы с помощью submit (), когда я возвращаю false во вложенной функции each ()? - PullRequest
0 голосов
/ 07 апреля 2011

Мне нужно проверить форму перед отправкой, но мне нужно перебрать некоторые входные данные. Если ввод неверен, мне нужно вернуть false и остановить отправку, однако, поскольку тест находится во вложенной функции each (), он не возвращает false во внешней функции submit ():

$("#my_form").submit(function() {
    $("#my_form .my_text_inputs").each(function() {
        if ($(this).val() == "bad value")
        {
            alert("Input was invalid");
            return false;
        }
    });
    return true;
});

Мое решение:

$("#my_form").submit(function() {
    var _bSubmitTheForm = true;
    $("#my_form .my_text_inputs").each(function() {
        if ($(this).val() == "bad value")
        {
            alert("Input was invalid");
            _bSubmitTheForm = false;
            return false;
        }
    });
    return _bSubmitTheForm;
});

... есть ли более элегантный способ сделать это?

Спасибо

1 Ответ

0 голосов
/ 07 апреля 2011

return false изнутри $.each выйдет из каждого цикла. Так что вы все еще хотите вернуться туда для оптимизации.

Кроме того, я бы рекомендовал использовать jQuery validate для достижения того же результата.

...