Прервать функцию, если, если условие не проходит - PullRequest
1 голос
/ 25 ноября 2011

Я получил этот код

 $(function(){
                   $('form.register input[type=text], .search input').ToggleInputValue();
                    $('#next').click(function() {
                        $('form.register input[type=text]').each(function(index) {
                            if(!$(this).hasClass('valid')){
                                $('.note').append('<p>Alla fält har inte blivit korrekt fylda</p>')
                                return false;
                            }
                        });
                      $('.register').submit();
                    });
                });

Дело в том, что я не хочу, чтобы форма передавалась, если есть какое-либо поле, у которого нет действительного класса, я думал, что return false сделает это, но это не так

Ответы [ 3 ]

5 голосов
/ 25 ноября 2011

Как уже упоминалось в ipr101, return false не выходит из функции.Более эффективный метод для достижения ваших результатов показан ниже.Используйте :not(.valid), чтобы проверить, есть ли какой-либо элемент ввода без класса valid.

 $(function(){
   $('form.register input[type=text], .search input').ToggleInputValue();
    $('#next').click(function() {
        // If there's at least one element without class valid
        if($('form.register input[type=text]:not(.valid)').length > 0) {
           $('.note').append('<p>Alla fält har inte blivit korrekt fylda</p>')
        }
        else { //All elements are valid, submit
           $('.register').submit();
        }
    });
});
3 голосов
/ 25 ноября 2011

return false; будет выходить только из цикла each, а не из всей функции. Вы можете установить логическое значение в false, если вы нашли поле с недопустимым классом, и отправлять форму только в том случае, если значение было истинным.

0 голосов
/ 25 ноября 2011

Кроме того, вы можете попробовать это:

$(function(){
    $('form.register input[type=text], .search input').ToggleInputValue();
        $('#next').click(function() {
            var zero = 0;
            $('form.register input[type=text]').each(function(index) {
                if(!$(this).hasClass('valid')){
                    $('.note').append('<p>Alla fält har inte blivit korrekt fylda</p>')
                    zero++;
                }
            });
            if(0 == zero) {
                $('.register').submit();
            } else {
                // return false; /* if you still need */ 
            }
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...