如何通过optgroup设置所选选项?

时间:2012-12-09 15:55:30

标签: javascript jquery html jquery-selectors

我有以下选择:

<select name="pricelist_product[]" id="pricelist_product">
  <option value="error" disabled="disabled">SELECT PRODUCT</option>
  <optgroup label="Cellcom" id="1">
    <option value="70">75</option>"
    <option value="125">125</option>
    <option value="199">199</option>
    <option value="5">card bonus 5</option>
  </optgroup>
  <optgroup label="Orange" id="2">
    <option value="70"> 70</option>
    <option value="130"> 130</option>
    <option value="135"> 135 </option>
  </optgroup>
</select>

现在这只是一种简化,实际上我可能会遇到来自不同群体的选项具有相同价值的情况。

现在我所做的是使用optgroup的ID来推迟他们,这是一个很好的黑客,但我遇到的问题是如何按组设置选定的选项。我有以下代码:

$('#prices_table tbody tr:last').children().eq(0).children()
  .val(item.product_id).attr('selected','selected');

现在item.product_id包含值,当然可以设置错误的值。我有一个2D数组,其中包含如下值:

values[item.provider_id][item.product_id]

第一个ID是optgroup id,第二个ID是值。我怎样才能做到这一点?我没有找到关于这个主题的信息。

3 个答案:

答案 0 :(得分:1)

试试这个:

$(function() {
    var groupId = "1";
    var value = "70";

    $("#pricelist_product #'" + groupId +  "' option[value='" + value + "']").prop("selected", true);
});

答案 1 :(得分:0)

试试这个

$("#pricelist_product > optgroup[id='" + item.provider_id +"']").find("option[value='" + item.product_id + "']").attr("selected","selected");

答案 2 :(得分:0)

这是一种更简单的方法:

$(yourInputSelector).val(item.product_id);