2012-10-11 116 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; 
}); 
});