JQuery select2 установить значение по умолчанию из опции в списке?

Я хочу иметь возможность установить значение по умолчанию/выбранное значение элемента select с помощью плагина JQuery Select2.

8 ответов

Еще один способ - просто добавьте атрибут selected = "selected" к разметке select и вызовите select2 на нем. Он должен принять выбранное вами значение. Нет необходимости в дополнительном JavaScript. Вот так:

Разметка

<select>
 <option id="foo">Some Text</option>
 <option id="bar" selected="selected">Other Text</option>
</select>

JavaScript

$('select').select2(); //oh yes just this!

Смотрите скрипту: http://jsfiddle.net/6hZFU/

Изменить: (спасибо, Джей Хаазе!)

Если это не сработает, попробуйте установить для свойства val значение select2 на null, чтобы очистить значение, например:

$('select').select2("val", null); //a lil' bit more :)

После этого достаточно просто установить val в "Whatever You Want".


Один из способов добиться этого - <...>

$('select').select2().select2('val', $('.select2 option:eq(1)').val());

Итак, сначала вы сначала инициализируете плагин, затем указываете значение по умолчанию, используя параметр "val". Фактическое значение берется из указанной опции, в этом случае №1. Таким образом, выбранное значение из этого примера будет "bar".

<select>
 <option id="foo">Some Text</option>
 <option id="bar">Other Text</option>
</select>

Надеюсь, это полезно кому-то другому.


$("#id").select2("val", null); //this will not work..you can try

На самом деле вы должны сделать это... intialise, а затем установить значение. Ну, это также так, как это сработало для меня.

$("#id").select2().select2("val", null);
$("#id").select2().select2("val", 'oneofthevaluehere');


Вышеупомянутые решения не сработали для меня, но этот код на собственном веб-сайте Select2 сделал:

$('select').val('US'); // Select the option with a value of 'US'
$('select').trigger('change'); // Notify any JS components that the value changed

Веб-страница, найденная здесь

Надеюсь, это поможет любому, кто борется, как и я.


$('select').select2("val",null);


Для ajax select2 multiple select dropdown я сделал это:

//preset element values
 //topics is an array of format [{"id":"","text":""}, .....]
 $(id).val(topics);
 setTimeout(function(){
 ajaxTopicDropdown(id,
 2,location.origin+"/api for gettings topics/",
 "Pick a topic", true, 5); 
 },1);
 // ajaxtopicDropdown is dry fucntion to get topics for diffrent element and url


Для 4.x версии

$('#select2Id').val(__INDEX__).trigger('change');

чтобы выбрать значение с INDEX

$('#select2Id').val('').trigger('change');

чтобы выбрать ничего (показать, если это место),


Если вы используете источник данных массива, вы можете сделать что-то вроде ниже -

$(".select").select2({
 data: data_names
});
data_names.forEach(function(name) {
 if (name.selected) {
 $(".select").select2('val', name.id);
 }
});

Это предполагает, что из вашего набора данных один элемент, который вы хотите установить по умолчанию, имеет дополнительный атрибут, называемый выбранным, и мы используем его для установки значения.

licensed under cc by-sa 3.0 with attribution.