2011-04-18 102 views

回答

0

您正在寻找:

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语句也写了,我刚刚扩展了这个指示的几个值

+0

我有一个简单的下拉菜单。三种选择。基于某个选项选择,我需要一个选项,使可见(vs. hide/show)表单元素和两个将另一个表单元素的类更改为“required”。 – adg 2011-04-18 13:35:31

+0

@adg - 在这种情况下,获取'.selectedIndex'将正确地为您标识哪个项目被选择用于您的担忧。 “警告”仅适用于那些想要确定用户是否物理地选择了一个选项,在该选项中,如果不与变化事件侦听器组合,则.selectedIndex可能返回“误报”。 – scunliffe 2011-04-18 13:49:07

+0

以上都是我的头:)我对这个超新颖,所以很多代码说话只会让我更加困惑。 :) :)无论如何,如果我有“if(document.myform.myselectbox.selectedIndex!= -2),那么我的”document.getElementById(“two”)。style.visibility =“visible”;“应该关闭if “two”是列表中的第二个选项吗? – adg 2011-04-18 14:13:55