Как инициализировать выпадающий () с заранее выбранным значением, а затем изменить его? - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть сетка с выпадающим списком в каждой строке, и мне нужно визуализировать ее состояние из БД.Итак, у меня есть выпадающие списки, определенные так, с выбранным параметром, заданным для предварительного выбора значения из БД.

<select id='selectId'>
<option value='1'>Option 1</option>
<option value='2' selected='selected'>Option 2</option>
<option value='3'>Option 3</option>
</select>​

Проблема в том, что когда я изменяю значение выпадающего меню, определенного в браузере, оно изменяетсяв пользовательском интерфейсе, но выбранный атрибут не перемещается и остается там, где он был.Поэтому, когда я затем вызываю $ ("# selectId"). Val (), я получаю старое значение.

Каков подходящий способ инициализации выпадающего управления, а затем возможность свободно изменять его значение в браузере илиот jQuery?

Ответы [ 5 ]

2 голосов
/ 29 февраля 2012

Кажется, это работает нормально (Firefox в Ubuntu):

HTML

<select id='selectId'>
<option value='1'>Option 1</option>
<option value='2' selected='selected'>Option 2</option>
<option value='3'>Option 3</option>
</select>

JS

$('#selectId').change(function() {
    var opt = $(this).find('option:selected');
    console.log([opt.val(), opt.text()]);   
});

var opt_sel = $('#selectId option:selected');
opt_sel.val(99);
opt_sel.text('Changed option');

Если вы выберете опции, вы увидите, что будет напечатана измененная версия. Рабочий пример:

Надеюсь, это поможет.

1 голос
/ 29 февраля 2012

Должно работать нормально. Может быть, вы не правильно его настраиваете.

Вы должны передать value опции методу val(), чтобы выбрать его.

E.g $('#selectId').val('1'); установит первый вариант как выбранный, а затем вызов $('#selectId').val() даст вам 1, а не 2.

Вот рабочий пример http://jsfiddle.net/3eu85/

0 голосов
/ 29 февраля 2012

, пожалуйста, используйте этот код вместо

$('#selectId option:selected').val(); 
0 голосов
/ 29 февраля 2012

Вы можете получить значение выбранной опции вместо выбора

$('select#selectId option:selected').val(); 

Документы: http://api.jquery.com/val/

0 голосов
/ 29 февраля 2012

В каком браузере вы пытаетесь это сделать? Ваш код выглядит нормально для меня и, кажется, работает в this jsFiddle .

...