我想知道在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>
亲切的问候 阿里安
答案 0 :(得分:1)
应该是
<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);