Подтвердить что ты не робот

Выбор значения в select2 с optGroup

Я даю следующие данные для 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" будет выбрано значение " all". Как выбрать значение item1?

4b9b3361

Ответ 1

Чтобы установить выбранное значение с помощью select2, вы должны использовать:

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

Из примечания к выпуску:

Вместо этого вы должны напрямую вызвать .val для базового элемента. Если вам нужен второй параметр (triggerChange), вы также должны вызовите .trigger( "change" ) для элемента.

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

Ответ 2

JSFiddle, где выбран пункт 1.

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>

Ответ 3

Я не уверен, если вы имеете в виду, что значение "Все" выбирается в начале или если вы хотите выбрать "item1" по коду, и это не сработает. Мне кажется странным, что "Все" выбирается как ценность, поскольку его следует рассматривать как категорию, даже добавляя

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

он не будет выбирать для меня "Все" . Если я добавлю

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

Он выберет для меня "item2" (что означает, что метод выбора элемента работает, хотя это не лучший способ, как указано в Lelio Faieta Answer)

если я добавляю

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

он не будет выбирать для меня "все", он просто покажет мне пустой выбор. Поэтому я думаю, что с вашим кодом должна быть проблема, потому что на чистой странице, похоже, нет способа выбрать "Все"

Вы можете показать нам весь код, включая html вашей страницы (по крайней мере, часть, относящуюся к выбору). Я пробовал это (см. Plunker здесь: http://plnkr.co/edit/m6pFUt?p=preview)

<script>
$(document).ready(function() {
    data = [{
        "id": "all",
        "text": "All",
        "children": [{
            "id": "item1",
            "text": "item1"
        }, {
            "id": "item2",
            "text": "item2"
        }]
    }];

    $(".select2-text").select2({
        "data": data
    });
});
</script>
<select class="select2-text"></select>

И начинается с выбранного элемента 1, а "Все" рассматривается как категория. Так что, возможно, это просто потому, что что-то не так в вашем коде /HTML.
Какую версию Select2 вы используете? я использую 2-4.0.0

Ответ 4

Я попытался сделать эту демонстрацию, чтобы показать вам, что она работает. Демонстрация использует тег 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>