2010-01-26 2 views
0

У меня есть поле выбора, которое заполняется всеми доступными параметрами, которые оно может иметь. Когда пользователь нажимает на запись в моем приложении, я получаю ответ xml, который включает значение параметра для этой записи. Я хотел бы использовать javascript для установки выбранного индекса для этой конкретной опции в поле выбора без необходимости перезагрузки блока выбора. Есть ли простой способ найти индекс опциона на основе значения или имени параметра? Тогда я мог бы установить эту опцию в качестве выбранного индекса.Как выбрать опцию в поле выбора по значению опции с помощью Javascript?

ответ

3

Я бы второй ответ Тоби. Тем не менее, если вы не можете использовать существующую библиотеку по какой-то причине, это достаточно легко сделать в простом JavaScript:

function selectByValue(el, value) { 
    for (var i=0, len=options.length; i<len; i++) { 
     if (el.options[i].value == value) { 
      el.selectedIndex = i; 
      break; 
     } 
    } 
} 

Если вы хотите использовать текст опции вместо замены .value с .text. Я предполагаю, что вы имели в виду «текст», поскольку параметры выбора не имеют свойства «name».

+1

Спасибо! Это сработало. В качестве побочного примечания ... Я обнаружил по ошибке, что вы можете избежать всего процесса, просто сделав это: document.getElementById ('my_selector'). Value = record_value; Кажется, что выбрать подходящую запись, не требуя, чтобы найти индекс вообще. IE, вероятно, взорвется на этом, но он работает во всех браузерах, не связанных с FUBARed, которые я пробовал. – user77413

+0

Знаешь, у меня была странная догадка, которая будет работать, хотя я не пробовал. Полезно знать. – elo80ka

+1

dropdownEl.value = значение работает и в IE. – einarq

0

Я бы предложил посмотреть библиотеку JS, такую ​​как jQuery или Prototype. Они делают такую ​​вещь легкой.

1

Это будет довольно близко к этому:

function find_index(options, value) { 
    for (var i=0; i<options.length; i++) { 
     if (options[i].value == value) { 
      return i; 
     } 
    } 
    return -1 
} 

function set_selected_option(select_element, value) { 
    var index = find_index(select_element.options, value) 
    if (index != -1){ 
     select_element.selectedIndex = index; 
    } 
} 
Смежные вопросы