取消选择不允许多项选择的控件中的所有html选择选项

时间:2010-09-21 17:21:31

标签: javascript html html-select

我有一个包含多个HTML Select控件的网页,这些控件都允许多个选择。在每个控件旁边,我们有一个“清除”按钮,可以取消选择控件中的所有选定项目,其中onclick看起来像这样:

<input type=button value="Clear" size=5 onclick="selectOptions('n.MyControl', false)">

调用的Javascript代码如下所示:

function selectOptions(controlName, bSelectItems)
{
    for (i=0; i < document.myForm[controlName].options.length; i++)
    {
        document.myForm[controlName].options[i].selected = bSelectItems;
    }

}

它适用于允许多项选择的Select控件,但我刚刚添加了一个不允许多项选择的Select控件(即没有“multiple”属性),并且此代码不会清除它。如果我添加“multiple”属性,Clear按钮会再次开始工作,所以我知道它与我不允许选择多个项目这一事实有关。

我的问题是,为什么上面的代码不起作用,更重要的是,如何在JavaScript中清除我的新Select控件?

2 个答案:

答案 0 :(得分:4)

你的代码不起作用的原因是因为你试图迭代每个选项并做一些事情,但是因为(就像你说的那样)没有设置多个属性,所以它不允许你修改多个选项。

至于修复它,您可以尝试获取所选选项,然后取消选择该单个选项。

<强>更新 我不确定这是否是理想的解决方案,但在IE8中似乎对我有用。

document.getElementById('myselect').selectedIndex = -1;

当然,您可以获得最适合您的select元素,但只需将selectedIndex属性设置为-1

答案 1 :(得分:1)

没有清除单个<select>框这样的东西。只要选择中有任何选项,一个选项将始终被选中。如果没有选项在第一次加载时设置selected,则第一个选项将自动被选中。

通常的方法是将第一个选项作为虚拟选项(如<option value="">(Please select a thing)</option>),并重置为该选项(使用select.selectedIndex= 0)。