@Zewkin
Я у мамы фронтэндер

Как остановить функцию?

$('button').on('click', function(e) {
        e.preventDefault();

        var comment = {
            'comment': $('textarea').val(),
            'name': $('input[name=name]').val(),
            'email': $('input[name=email]').val()
        };
        for (value in comment) {
            if (comment[value] == '') {
                alert('Все поля обязательны!');
                break;
                return false;
            }
        }

       //тут еще много кода

});


По моей задумке, если хоть одно значение пустое, должен выбрасываться алерт и "много кода" не должно выполняться. Алерт выбрасывается, функция все равно выполняется дальше. Что я делаю неправильно?

Спасибо.
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
return не отработает, поскольку перед ним стоит break, прерывающий выполнение последовательности и продолжающий выполнение после цикла.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ответ вам уже дали, скажу только что код у вас сильно избыточный. В jQuery есть целый ряд методов специально для перебора объектов. Например вот так можно решить вашу задачу:
$('button').on('click', function(e) {
    e.preventDefault();
    var $emptyFields = $('textarea, input[name=name], input[name=email]').filter(function() {
        return !$(this).val();
    });

    if ($emptyFields.length) {
        return alert('Все поля обязательны!');
    }

    //тут еще много кода
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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