Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить значения доп. полей select-option (https://javascript.ru/forum/misc/12064-poluchit-znacheniya-dop-polejj-select-option.html)

arcanerain 29.09.2010 00:59

Получить значения доп. полей select-option
 
Доброго времени суток, поделитесь, пожалуйста, если кто знает как в js получить значение из option комбобокса. например
<select name="element">
<option group_id=30 value=1>1</option>
<option group_id=31 value=2>2</option>
<option group_id=32 value=3>3</option>
</select>


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

Riim 29.09.2010 01:23

Цитата:

Сообщение от arcanerain
из выбранного

elem.options[elem.selectedIndex]

Цитата:

Сообщение от arcanerain
получить group_id

elem.group_id

arcanerain 29.09.2010 01:44

дописываем в select onChange='getGroupId()', пишем

function getGroupId()
{
elem = document.getElementsByName('element');
alert(elem.group_id);
}


получаем undefined. это я пробовал первым делом. как получить значение поля и value знаю, но соль в том что нужен именно мой атрибут. мб есть другие варианты?

Riim 29.09.2010 01:48

Цитата:

Сообщение от arcanerain
elem.group_id

нужно использовать на выбранном option. Как найти выбранный я писал выше.

arcanerain 29.09.2010 01:59

elem.options[elem.selectedIndex].group_id также выдает undefined(

Riim 29.09.2010 02:10

Цитата:

Сообщение от arcanerain
также выдает undefined(

да, я немного ошибся: левые атрибуты не дублируются в свойства, их нужно получать через getAttribute. Полный рабочий пример:
<select onchange="alert(this.options[this.selectedIndex].getAttribute('group_id'));">
<option group_id="1">1</option>
<option group_id="2">2</option>
<option group_id="3">3</option>
<option group_id="4">4</option>
</select>

arcanerain 29.09.2010 02:33

огромное спасибо!

Gvozd 29.09.2010 02:35

Цитата:

Сообщение от Riim
левые атрибуты не дублируются в свойства, их нужно получать через getAttribute

любые атрибуты надо получать через getAttribute
кроме случая, когда знаешь на 100% что данный атрибут перейдет в какое-то свойство(возможно с другим именем)
более того для произвольтного "левого атрибута" я не уверен, что можно гарантировать кросбраузерный доступ хоть каким-то способом.

Octane 29.09.2010 02:39

И в надежде на будущий dataset api называть левые атрибуты лучше так:
<option data-group-id="1">1</option>

arcanerain 29.09.2010 02:40

завтра проверю кроссбраузерность. главное, что уже есть на что опираться) если "левый" атрибут не пойдет, есть один путь отступления - использовать родной label.


Часовой пояс GMT +3, время: 17:36.