HTML <select>元素的默认selecteindex为-1,而不运行整个页面的javascript

Can an HTML <select> element have a default selectedIndex of -1 without running page-wide javascript?

本文关键字:运行 javascript select 元素 默认 HTML selecteindex      更新时间:2023-09-26

我的网站中有几个地方需要一个"combobox"样式的控件。为此,我将组合框控件封装到. net服务器端组件中,以实现可重用性。有些页面上可能有一个组合框,有些页面上可能没有。

在核心,这个组合框包含一个文本框和一个与CSS对齐的"下拉框"。呈现的部分HTML只是:

<select>
    <option>Option 1</option>
    <option>Option 2</option>
    <option>Option 3</option>
    <option>Option 4</option>
</select>

下拉列表一开始必须为空,改变任何值(包括"Option 1")必须触发onchange事件。

我这样做:

document.getElementById("theSelectElement").selectedIndex = -1;

,但我不喜欢对页面上的每个元素运行javascript。我意识到我可以使用jQuery来针对CSS类进行选择,但是大多数页面都没有select元素,所以什么也不会发生。

是否有一种方法来设置selectedIndex是封装在标签本身?比如:

<select selectedIndex="-1">...

<select onload="this.selectedIndex = -1">...

?

select是一个无线电状态保存器,所以没有"非选定"状态

<select name="aaa">
    <option value=""></option>
    <option>Option 1</option>
    <option>Option 2</option>
    <option>Option 3</option>
    <option>Option 4</option>
</select>

可以使用空的<选项>

您可以使用以下选项:默认情况下,第一个选项将被自动选中

<select name="aaa">
    <option value="0">select any option</option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
    <option value="4">Option 4</option>
</select>

下面是select的一些文档:http://www.w3.org/TR/html4/interact/forms.html#h-17.6

如果你已经将它包装在你自己的用户控件或自定义控件中,那么你需要公开暴露defaultSelection属性(或任何你命名它的东西),这样它就可以在你的服务器标签中指定。

您谈论在<select>标记中做它,但这是HTML标记-而不是<ASP:DropDown ... ><myControl:CustomSelect ... >的服务器端标记

EDIT:如果它是纯HTML,那么只需输出带有selected属性设置的默认选择:

<select>
    <option value="1">Top</option>
    <option selected="selected" value="-1">Middle (Empty)</option>
    <option value="2">End</option>
</select>