2013-12-22 19 views
0

我有一個問題,我不知道如何解決這個問題。jQuery each()函數控制相同的元素

我有一個巨大的形式,我有汽車會議的「飛行員」。在我的字段中,我需要檢測當前字段是否有長度大於等於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

繼續:'return;'break:'return false;' – Andreas

回答

0

您可以通過從回調函數返回false來「破壞」.each()循環。返回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(); 
} 

這樣一來,你在else區塊執行代碼最多一次。循環的每次迭代都不會一次。

+0

Thx,您的解決方案很好,它確實幫助我解決了我的問題!謝謝。 –