Вы ищете:
if (document.myform.myselectbox.selectedIndex != -1)
Если ничего не выбрано, индекс возвращает -1
.
Если вы действительно хотите использовать внутреннее значение или текстовую строку для выбранного параметра, вы можете получить к нему доступ по индексу:
var selObj = document.myform.myselectbox;
var selIndex = selObj.selectedIndex;
var selOptionValue = selObj.options[selIndex].value;
var selOptionText = selObj.options[selIndex].text;
Однако Вы должны знать, что поведение также немного зависит от того, как оно отображается. С «единственным» элементом выбора (например, «выпадающим»), если вы не укажете, что конкретный параметр «выбран», то первый вариант (индекс 0
) считается выбранным, так как он есть визуально отображается.
<select>
<option>red</option><!-- "selected" by default when rendered -->
<option>orange</option>
<option>yellow</option>
...
</select>
Если у вас есть элемент select с атрибутом размера больше 1 (например, 6), то визуально не выбрано ни одного, поэтому по умолчанию элемент вернет -1 (если ни один не был выбран)
<select size="6">
<option>red</option><!-- NOT "selected" by default when rendered -->
<option>orange</option>
<option>yellow</option>
...
</select>
В любом случае, вы можете использовать такой код, чтобы определить, что делать:
var mySelect = document.myform.myselectbox;
var selIndex = mySelect.selectedIndex;
if(selIndex != -1){
//an option is selected
if(selIndex == 0){
//first option is selected
} else if(selIndex == 1){
//second is selected
} else if(selIndex == 2){
//third is selected
}
} else {
//no option is selected
}
Вы также можете написать это с помощью оператора switch / case, я только что расширил это, чтобы указать несколько значений