2013-09-07 3 views
1

У меня есть следующий код:JQuery возвращают ложные, не останавливая запрос от запуска

else if($page == 'two'){ 
     $('[name^=q1\\[\\]] option:selected').each(function() { 
      if ($(this).val() < 1) { 
       $('#rq1').addClass('hovered_error'); 
       $('#mandall').css("background-color","#901F39"); 
       $('#mandall').css("color","#FFF"); 
       return false; 
      } 
     }); 
    } 

Что должно произойти, если .val меньше 1 - он должен добавить класс, изменить CSS от ID # mandall, а затем остановите запрос.

Что на самом деле происходит, так это то, что он добавляет класс и изменяет css #mandall, а затем продолжает отправлять форму - когда это не должно - чего мне не хватает?

ответ

4

Когда вы вызываете return false; изнутри цикла .each(), вы фактически просто вырываете из .each.

Чтобы остановить отправку формы, необходимо позвонить return false; где-то за пределами вашего .each.

var doSubmit = true; 
$('[name^=q1\\[\\]] option:selected').each(function() { 
     if ($(this).val() < 1) { 
      doSubmit = false; 
      return false; 
     } 
}); 
if(!doSubmit) return false; 
+0

Спасибо за это, но ясно, что в моем коде должно быть что-то очень странное, как добавление этого, все равно не работает. :-( –

+0

@Homer_J - Что запускает этот код? Очевидно, вы только показывали половину своей функции, так как вы начинаете с 'else ...' – nnnnnn

+0

Все отсортированные - yep, необходимые для того, чтобы поместить второе значение false, правильно за пределами else loop –

2

Это потому, что вы возвращаете значение из метода обратного вызова (each), которая не приведет к возврату из метода вызывающего абонента (ваш отправить обратный вызов).

else if($page == 'two'){ 
    var valid = true; 
    $('[name^=q1\\[\\]] option:selected').each(function() { 
     if ($(this).val() < 1) { 
      $('#rq1').addClass('hovered_error'); 
      $('#mandall').css("background-color","#901F39"); 
      $('#mandall').css("color","#FFF"); 
      valid = false; 
      return false; 
     } 
    }); 
    if(!valid){ 
     returnf false; 
    } 
} 
+0

Приветствия за то, что нашли время ответить. –

Смежные вопросы