选择具有optGroup的select2中的值

时间:2015-05-04 16:54:57

标签: javascript jquery jquery-select2

我将以下数据输入到select2

data = [{
    "id": "all",
    "text": "All",
    "children": [{
        "id": "item1",
        "text": "item1"
    }, {
        "id": "item2",
        "text": "item2"
    }]
}];

我将select2初始化为:

$(parent).select2({"data":data});

现在选择值" item1 ",我做了

$(parent).select2("val",["item1"]);

然而,不是价值" item1 "价值" 所有"正在被选中。如何选择值item1?

4 个答案:

答案 0 :(得分:7)

要使用select2设置所选值,您应该使用:

$(parent).val("item1").trigger("change");

来自release notes

  

您应该直接在底层元素上调用.val。如果你需要第二个参数(triggerChange),你也应该   在元素上调用.trigger(“change”)。

$("select").val("1"); // instead of $("select").select2("val", "1");

答案 1 :(得分:1)

JSFiddle其中选择了item1。

JS:

var data = [{
    id: 'all',
    text: 'All',
    children: [{
        id: 'item1',
        text: 'item1'
    }, {
        id: 'item2',
        text: 'item2'
    }]
}];

$('.js-example-data-array').select2({data:data});

$('.js-example-data-array').select2('val',['item1']);

HTML:

<select class="js-example-data-array">
</select>

答案 2 :(得分:0)

我不确定你是否意味着在开始时选择了“全部”值,或者如果你想通过代码选择“item1”而它不起作用。我觉得奇怪的是“全部”被选为值,因为它应该被视为一个类别,即使添加

validates :password,                presence: true, confirmation: true, length: { minimum: 3}

它不会为我选择“全部”。如果我添加

$(".select2-text").select2("val",["item1"]);

它将为我选择“item2”(这意味着选择项目的方法有效,尽管这不是最好的方式,如Lelio Faieta的答案中所述)

如果我添加

$(".select2-text").select2("val",["item2"]);

它不会为我选择“全部”,它只会显示一个空白选择。所以我认为你的代码肯定存在问题,因为在一个干净的页面中似乎没有办法选择“全部”

您能否向我们展示整个代码,包括您网页的html(至少与选择相关的部分)。我试过这个(请参阅这里的plunker:http://plnkr.co/edit/m6pFUt?p=preview

$(".select2-text").select2("val",["all"]);

它从选择的item1开始,而“All”被视为一个类别。所以也许只是因为你的代码/ HTML出了问题 您使用的是哪个版本的Select2?我正在使用2-4.0.0

答案 3 :(得分:0)

我试图让this demo告诉你它有效。该演示使用select标记作为空的和现有select元素的选择器。实际上,parent我不知道你的意思是什么:

<select>
</select>
<script>
data = [{
    "id": "all",
    "text": "All",
    "children": [{
        "id": "item1",
        "text": "item1"
    }, {
        "id": "item2",
        "text": "item2"
    }]
}];

$('select').select2({
    "data": data
});

$('select').select2("val", ["item2"]);

</script>