Изменить параметр select2 при нажатии

Я использую плагин select2 для моего выбора services_dd в моей форме, у меня есть ссылка на странице с классом .js-autoselect. Нажав на это, я хочу взять идентификатор этого тега ссылки и изменить параметр select2 в зависимости от кнопки, которую они нажали.

Атрибут значения <option> соответствует атрибуту идентификатора в ссылке. Код ниже успешно меняет значение, но select2 не обновляется, он по-прежнему показывает первый выбор.

$('.js-autoselect').click(function(e){
    e.preventDefault();
    var option = $(e.target).attr('id').trim().toLowerCase(); // option =link1

    $('#services_dd option:selected').val(option);
    alert($('#services_dd option:selected').val()); // this alerts link1 which is correct

});

Кто-нибудь знает, как обновить select2


person CR41G14    schedule 21.12.2012    source источник
comment
Вы меняете значение выбранной опции, но не меняете выбранную опцию. Избавьтесь от option:selected   -  person Reinstate Monica Cellio    schedule 21.12.2012


Ответы (3)


$("#services_dd").select2("val", option);

См. раздел документации «Программный доступ»: http://ivaynberg.github.com/select2/#documentation< /а>

person scoota269    schedule 21.12.2012

Рабочий пример

Основываясь на ответе @scoota269, я написал следующий скрипт JS, который показывает, как это работает: https://jsfiddle.net/robertmassaioli/ro2279ts/5/

Это должно помочь вам увидеть, как это работает.

Код

На всякий случай, когда JS Fiddle когда-либо отключится:

$(function() {
    var select = $("#the-select");
    select.select2();

    $("#update").click(function() {
        // How to remove a value
        select.find("option[value=1]").remove();
        // How to add a value
        select.append("<option value='5'>Five</option>");
        select.select2();
    });

    $("#select").click(function() {
        // How to select a value
        var current = select.select2("val");
        current = current || [];
        current.push(2);
        select.select2("val", current);
    });
});
person Robert Massaioli    schedule 06.06.2015

Я думаю, вы должны просто сделать

$('#services_dd').val(option);
alert($('#services_dd').val());

В противном случае в вашем коде вы бы изменили только атрибут value выбранного параметра (вместо значения элемента select).

person Aioros    schedule 21.12.2012