виджет select2 не может программно обновить выбранное значение

Работа с виджетом angular, select2. Я объявляю это в HTML примерно так:

<div>
    <select id = "dropdown"
       ...
       <option value = "1" id="1">1</option>
       <option value = "2" id="2" >2</option>
       <option value = "3" id="3"" >3</option>
    /select>
</div

и хотите программно изменить выбранный элемент (вызванный из другой функции).

При вызове кода:

 $("#dropdown").select2().select2('val', "3")

Я вижу, что значение в раскрывающемся списке изменяется, но при фактическом доступе к атрибуту модели раскрывающегося списка (для извлечения выбранного элемента) оно не установлено на то, что я пытался установить.

При проверке события onChange раскрывающегося списка я вижу, что e.val не определен.

См. следующую скрипку в качестве примера (после перехода по ссылке я не должен был получить «неопределенное» в окне предупреждения): http://jsfiddle.net/kcArV/1/

Любые идеи, что я делаю неправильно?


person aviad cohen    schedule 21.04.2013    source источник


Ответы (1)


Так должно быть

$('#attribute').select2().on('change', function(e) {
    alert($(this).val());    
});

e — это объект события, а не элемент управления select, контекст метода this указывает на элемент select, поэтому вы можете вызвать .val(), чтобы получить выбранное значение

Демонстрация: Fiddle

person Arun P Johny    schedule 22.04.2013