jQuery каждый метод не возвращает значение - PullRequest
4 голосов
/ 14 декабря 2009
$(document).ready(function() {

    $('#commentForm').submit(function(){

        return $('input[type=text], textarea').each(function(index){

            if($(this).attr('value') == ""){
                alert(msgHash[$(this).attr('id')]);
                return false;

            }else{

                if(!$(this).attr('value').match(validateHash[$(this).attr('id')])){
                    //Do nothing
                    alert(msgOnError[$(this).attr('id')]);
                    return false;
                }
            }
        });

        return true;
    });
});

Здесь msgOnError, msgHash и msgHash - карта, которую я использую для получения сообщений для каждого текстового поля с определенным идентификатором. К сожалению, каждый метод не возвращает false, чтобы отменить отправку формы. Что я делаю неправильно ?? Я новичок в jQuery, спасибо

1 Ответ

13 голосов
/ 14 декабря 2009

Да, именно так each работает. Поскольку на самом деле это цикл, который вызывает вашу анонимную функцию на каждой итерации, выход из этих функций также не завершит работу вызывающей функции. Возвращая true и false здесь, на самом деле соответствует continue и break цикла for, репозитивно.

Вам нужно установить логический флаг, затем вернуть false (break), а затем вернуть значение вашего логического флага после each

...