Выбор значения в 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?
Ответы
Ответ 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>