Как получить пустое значение OPTION, если оно пустое? - PullRequest
1 голос
/ 08 апреля 2011

Учитывая, что у нас есть этот HTML:

<select id="my_select">
  <option value="1">Foo</option>
  <option value="2">Bar</option>
  <option value="">Bork</option>
  <option value="3">Hey!</option>
</select>

Правильный способ получить выбранное value будет:

var oS = document.getElementById("my_select");
alert(oS.options[oS.selectedIndex].value);

Но если выбран третий вариант, Bork,alert() покажет "Bork", а не "" (пустая строка).Как мне получить пустую строку?

TYIA

Ответы [ 2 ]

7 голосов
/ 08 апреля 2011

Во-первых, это не так. Для меня в Chrome и IE8 ваш пример предупреждает пустую строку ( jsFiddle ).

Если, однако, value не установлен вообще ( jsFiddle ), Bork получает предупреждение. Я думаю, что это проблема, с которой вы сталкиваетесь. Это правильное поведение. Как говорит страница MDC ,

Если он не определен, его значением по умолчанию является текстовое содержимое элемента.

Однако вы можете использовать метод getAttribute, который дает null, если ни один элемент не выбран ( jsFiddle ).

var oS = document.getElementById("my_select");
alert(oS.options[oS.selectedIndex].getAttribute('value'));
0 голосов
/ 08 апреля 2011

alert (document.getElementById ("my_select"). Value)

возвращает пустую строку или любое определенное значение выбранной опции.

не нужно указывать опции [selectedIndex]

Если индекс по умолчанию не выбран, возвращается первое значение параметра.

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

текст опции возвращается в предупреждении сценария в большинстве браузеров,

и отправляется на сервер (если у select есть имя и действие формы) во всех браузерах.

...