查看是否已选择dropdownList中的项目

时间:2011-07-07 12:15:05

标签: javascript

我想知道在html中循环下拉列表以查看是否已选择项目的最佳方法是什么。

我知道在C#中它会像

那样
int selected = cmbFamily.SelectedIndex;

        for (int loop = 0; loop < cmbFamily.Items.Count; loop++)
        {
            if (selected == -1)
            {
                MessageBox.Show("please select an item", "Please", MessageBoxButtons.OK, MessageBoxIcon.Error);
                break;
            }
        }

我将如何使用javascript进行此操作?

<tr style="font-size:12pt; font-weight:bold; color:#FFFFFF; font-family:High Tower Text;">
                    <td>Family to join:</td>
                    <td><select name="drpFamily">
                        <option/>-select-
                        <option/>Gambino
                        <option/>Genovese
                        <option/>Lucchese
                        <option/>Colombo
                        <option/>Bonanno
                    </select><font color="red">*</font></td>
                </tr>

亲切的问候 阿里安

2 个答案:

答案 0 :(得分:1)

首先:your HTML is wrong.

应该是

<option>-select-
...

<option>-select-</option>
...

如果您只想要所选的值,可以通过value元素的select属性获取:

var value = document.getElementsByName('drpFamily')[0].value

仅当只有一个名为drpFamily的元素时才有效。如果没有,你必须找到一种合适的方法来选择它。

您可能希望将其与第一个值(默认选中)进行比较

if(value !== '-select-')

您还可以向select元素添加change事件侦听器:

document.getElementsByName('drpFamily')[0].onchange = function() {
    if(this.value !== '-select-') {
        //a value other '-select-' than was selected
    }
}

答案 1 :(得分:1)

首先,HTML代码是完全错误的。它不是</option>text,而是<option>text</option>

要遍历选项,就像

一样简单
//var options = document.getElementById("selectId").options;
var options = document.formName.selectName.options;
for(var i=0;i<options.length;i++){
  if(options[i].selected){
     alert(options[i].value);
  }
}

但不需要循环选择单个选项。最简单的方法是将选定的索引用于单个选择。

//var sel = document.getElementById("selectId");
var sel = document.formName.selectName;
var opt = sel.options[sel.selectedIndex];
alert(opt.value);