2012-10-11 156 views
-1

我知道還有關於這個here的另一個問題,但這只是不適合我。jquery each()只返回第一個值

所以我有一個非常大的表單,有大約40個字段,每個字段都有單獨的槽,所以我將50個字段分成不同的類別,併爲每個輸入類別分配一個id,例如, 10種數量的10種價格分爲4類:標準運輸,快遞運輸,急件運輸,超急運費。所以我叫所有的價格在一個類別下具有相同ID,例如說,標準運輸是

<id input type="text" name="s_qty_25" id="s_cf" /> 
<id input type="text" name="s_qty_50" id="s_cf" /> 
<id input type="text" name="s_qty_100" id="s_cf" /> 
.... and so on 

我的形式是這樣定義的:

<form method="post" id="creation_form" action="actions/add_prices.php"> 
    .... 
</form> 

和jQuery的我用它來驗證是像這樣:

$(function() { 
$('#creation_form').submit(function(e){ 

    $("#cs_f").each(function(index, obj){ 
     var cs_f_val = $(obj).val(); 
     if(cs_f_val == ''){ 
      $(obj).attr('style', 'background:red;'); 
      valid = false; 
     } 
    }); 

    //...repeat the snipet for each 3 remaining price groups 

    return valid; 
}); 
}); 

基本上將字段紅色,如果空和取消submition。但只有第一個領域會得到它的紅色背景!

感謝您的幫助:)

+1

你不能那樣做。具有相同'id'的多個元素是不允許的。改爲使用班級。你只從'each'得到一個結果的原因是,jQuery假定一個'id'選擇器只會匹配一個元素,而不會尋找更多。 – verdesmarald

+0

該ID必須是唯一的。 –

+0

oohhh我是!你們這些人! – RicardoE

回答

3

應該只有一個特定的ID字段。這就是爲什麼它被稱爲ID!

嘗試使用類代替:

<id input type="text" name="s_qty_25" class="s_cf" /> 
<id input type="text" name="s_qty_50" class="s_cf" /> 
<id input type="text" name="s_qty_100" class="s_cf" /> 

然後

$(".cs_f").each 
2

第一件事情.. ID應該永遠是獨一無二的......所以用類代替

<id input type="text" name="s_qty_100" class="s_cf" /> 

和你的javascript,試試這個

$(function() { 
$('#creation_form').submit(function(e){ 

    $(".cs_f").each(function(index, obj){ 
    var cs_f_val = $(obj).val(); 
    if(cs_f_val == ''){ 
     $(obj).attr('style', 'background:red;'); 
     valid = false; 
    } 
    }); 

    //...repeat the snipet for each 3 remaining price groups 

    return valid; 
}); 
});