@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);
	}
});


Такой код делает сабмит, даже если одно из полей формы не удовлетворяет условию.
  • Вопрос задан
  • 175 просмотров
Решения вопроса 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 изменять значение переменной-флага. Исходя из итогового значения этого флага нужно уже выполнять или не выполнять остальной код.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы