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

#jquery #forms #submit

#jquery #формы #Отправить

Вопрос:

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

$("#my_form").submit(функция() {
 $("#my_form .my_text_inputs").each(функция() { 
 if ($(this).val() == "неверное значение")
 {
 предупреждение ("Ввод был неверным");
 возвращает false;
 }
 });
 возвращает true;
});

Мое решение таково:

$("#my_form").submit(функция() { 
 var _bSubmitTheForm = true;
 $("#my_form .my_text_inputs").each(функция() { 
 if ($(this).val() == "неверное значение")
 {
 предупреждение ("Ввод был неверным");
 _bSubmitTheForm = false;
 возвращает false;
 }
 });
 верните _bSubmitTheForm;
});

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

Спасибо

Ответ №1:

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

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