jquery each()只返回第一个值

时间:2012-10-11 05:10:04

标签: jquery selector each

我知道还有另外一个问题here,但这对我不起作用。

所以我有一个非常大的形式,有大约40个字段,每个字段分别很痛苦,所以我将50个字段分成几个类别,并为每个输入类别分配一个id,例如,有10个4个类别的10个数量的价格领域:标准运输,快递,急运,超急速运输。所以我将所有价格命名为一个具有相同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;
});
});

如果为空则基本上将字段变为红色并取消子目录。但是只有第一个字段才能获得红色背景!

感谢帮助人员:)

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

第一件事... id应该始终是唯一的...所以请使用class

<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;
 });
});