@vohaha

Как выполнить код, только если все элементы в .each удовлетворяют условию?

var input = form.find('[type=text]');
input.each(function(i, elem) {
	if(!$(elem).val().length || $(elem).hasClass('LV_invalid_field')) {
		event.preventDefault();
		$(elem).addClass('LV_invalid_field');
		form.find('.notFill').show();
	} else {
		event.preventDefault();
		setTimeout(function () {
			form.submit();
		}, 2000); // in milliseconds
		confModal.dialog('open');
		setTimeout("$('#modal-confirmation').dialog('close')",2000);
	}
});


Такой код делает сабмит, даже если одно из полей формы не удовлетворяет условию.
  • Вопрос задан
  • 174 просмотра
Решения вопроса 2
@iShatokhin
JS developer
Если я правильно понял задумку.

form.submit(function (event) {
	event.preventDefault();
	var valid = !form.find(".LV_invalid_field").length; // сразу проверяем на наличие невалидных полей

  if (!valid) {
    form.find('.notFill').show();
    return;
  }

	form.find('[type=text]').each(function(i, elem) {
	  if (!$(elem).val().length || $(elem).hasClass('LV_invalid_field')) {
		  valid = 0;
  		    form.find('.notFill').show();
		  return false; // досрочно выходим из цикла
	  }
	});

	if (valid) {
	  setTimeout(function () {
		  form.submit(); // а вот этот код меня пугает, тут будет рекурсия!
	  }, 2000); // in milliseconds
	  confModal.dialog('open');
	  setTimeout("$('#modal-confirmation').dialog('close')",2000);
	}
});
Ответ написан
Комментировать
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Разумеется, нужно вынести код из each, а внутри each изменять значение переменной-флага. Исходя из итогового значения этого флага нужно уже выполнять или не выполнять остальной код.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы