2013-12-22 3 views
0

У меня есть вопрос, что я не могу понять, как это решить.jQuery каждый() функция управления одним и тем же элементом

У меня есть огромная форма, где у меня есть «пилоты» для сеанса автомобиля. В моих полях мне нужно определить, имеет ли текущее поле длину > 2.

Если кто-то из них правдивый, мне нужно показать специальную коробку для предупреждения.

Я фактически использую каждую функцию (функцию) для функции onChange.

Проблема в том, что первое значение возвращает true, а второе возвращает false, мое предупреждение скроется.

Я хотел бы знать, существует ли какая-либо «перерыв» или «продолжение» в каждой() функции.

Мой код

function check_dizaine(){ 

$('.check_dizaine').each(function() 
{ 
    if($(this).val().length >= 2) 
    { 

     $('#attention_pilotes').show(); 

     $(this).css('border', '1px solid #daa421'); 
     $(this).css('background','#f8ecc9'); 
    } 
    else 
    { 
     $(this).css('border', '1px solid #a1a1a1'); 
     $(this).css('background','#ffffff'); 

     $('#attention_pilotes').hide(); 
    } 
}); 

} 

Любой ключ?

+0

continue: 'return;' break: 'return false;' – Andreas

ответ

0

Вы можете «разбить» цикл .each(), вернув false из функции обратного вызова. Возвращение true или просто использование return; похоже на «продолжение».

$('.check_dizaine').each(function() { 
    if ($(this).val().length >= 2) { 
     $('#attention_pilotes').show(); 
     $(this).css('border', '1px solid #daa421'); 
     $(this).css('background','#f8ecc9'); 
     return false; // <--- *** Return false here *** 
    } else { 
     $(this).css('border', '1px solid #a1a1a1'); 
     $(this).css('background','#ffffff'); 
     $('#attention_pilotes').hide(); 
    } 
}); 

Но я думаю, что было бы лучше, чтобы сделать что-то вроде этого:

var showWarning = false; 
$('.check_dizaine').each(function() { 
    if ($(this).val().length >= 2) { 
     showWarning = true; 
     return false; 
    } 
}); 
if (showWarning) { 
    $('#attention_pilotes').show(); 
    $(this).css('border', '1px solid #daa421'); 
    $(this).css('background','#f8ecc9'); 
} else { 
    $(this).css('border', '1px solid #a1a1a1'); 
    $(this).css('background','#ffffff'); 
    $('#attention_pilotes').hide(); 
} 

Таким образом, вы выполняете код в другом-блоке не более одного раза. Не раз для каждой итерации цикла.

+0

Thx, ваше решение было хорошим, и это помогает мне решить мою проблему! Спасибо. –

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