Jquery读取编号组中选择下拉列表的数组

时间:2015-04-06 17:22:23

标签: javascript jquery

我有一系列选择下拉列表:

<select name="item[1]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<select name="item[2]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<select name="item[3]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<select name="item[4]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>

我正在尝试使用Jquery解析它们。名称中的数字由我数据库中项目的ID号填充。我基本上想要解析每一个,如果是,则使用ID从数据库中获取项目的价格以计算总数。这对Jquery来说甚至可能吗?我可以做其余的代码没问题,我只需要帮助解析所有item并返回每个代码的值和ID。

3 个答案:

答案 0 :(得分:1)

以下是完整示例( getIds方法是您想要的部分

&#13;
&#13;
function getIds(){
  var selected = $('select[name^="item["]').filter(function(){
    return this.value == 'Yes';
  }).map(function(){
    return this.name.match(/\d+/);
  });
  return selected.get();
}

// just for display purposes
// you should call the getIds() method when you need to..
$('select').change(function(){
  var ids = getIds();
  $('.results').text( ids );
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select name="item[1]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<select name="item[2]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<select name="item[3]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<select name="item[4]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>

<div class="results"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我会使用jQuery attribute starts with selector,并与.map()结合使用以获取所选项目的列表。

这是一个可运行的片段,在单击按钮后返回所选项目的数组。由你来取决于物品ID并产生你的价格。

$("button").on("click", function() {
  var ids = $('select[name^="item"]').map(function() {
    if ($(this).val() === "Yes")
      return this.name.replace(/\D/g,'');
    else 
      return null;
  }).toArray();
  
  alert(ids);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select name="item[1]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<select name="item[2]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<select name="item[3]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<select name="item[4]">
    <option value="No">No</option>
    <option value="Yes">Yes</option>
</select>
<button>Get Price</button>

答案 2 :(得分:0)

我没有测试过,但你可以尝试这样的事情:

$("select[name^='item']").each(function(){
console.log($(this).attr("name") + ": " + $(this).find(":selected").attr("value"));
});

稍加调整后,您可以将其转换为键值对,然后,如果我正确理解了问题,可能会使用eval()来获得所需的值。