您正在寻找:
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>
如果有一个大小为一个选择元件属性大于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
}
你可以这样使用开关/ case语句也写了,我刚刚扩展了这个指示的几个值
我有一个简单的下拉菜单。三种选择。基于某个选项选择,我需要一个选项,使可见(vs. hide/show)表单元素和两个将另一个表单元素的类更改为“required”。 – adg 2011-04-18 13:35:31
@adg - 在这种情况下,获取'.selectedIndex'将正确地为您标识哪个项目被选择用于您的担忧。 “警告”仅适用于那些想要确定用户是否物理地选择了一个选项,在该选项中,如果不与变化事件侦听器组合,则.selectedIndex可能返回“误报”。 – scunliffe 2011-04-18 13:49:07
以上都是我的头:)我对这个超新颖,所以很多代码说话只会让我更加困惑。 :) :)无论如何,如果我有“if(document.myform.myselectbox.selectedIndex!= -2),那么我的”document.getElementById(“two”)。style.visibility =“visible”;“应该关闭if “two”是列表中的第二个选项吗? – adg 2011-04-18 14:13:55