设置下拉列表的默认选择

Set the default selection for a dropdown

<tr>
    <td class="label">
    Filter:
    </td>
    <td>
    <select name="colSearchName" id="colSearchNameID" value="1">
    <%
        colNameIter = content.columnNameIterator( );
        for ( int i = 0; colNameIter.hasNext( ); ++i ) {
    %>
    <option value="<%= i %>"><%= colNameIter.next( ) %></option>
    <%
        }
    %>
    </select>
    </td>
    <td>
    <input id="autocompleteinput" type=text name="keyword" onKeyUp="autoCompleteOnTable(this.value);">
    </td>
</tr>

以上代码是一个下拉框,其中的值是从XML 文件中动态选择的。默认情况下应选择值为 1<option>,但它使用值为 0<option>。设置 <select> 元素的 value 没有帮助。

这不是您设置所选项目的方式。您需要将 selected 属性添加到您要选择的 <option>

例如:

<select name="colSearchName" id="colSearchNameID">
<%
    colNameIter = content.columnNameIterator( );
    for ( int i = 0; colNameIter.hasNext( ); ++i ) {
        if (i == 1) {
%>
<option value="<%= i %>" selected><%= colNameIter.next( ) %></option>
<%
        } else {
%>
<option value="<%= i %>"><%= colNameIter.next( ) %></option>
<%
        }
    }
%>
</select>

Select 添加 value 属性没有帮助,因为在 HTML 中,所选选项由元素上存在的 selected 属性表示像这样:

<option ... selected="selected">...</option>

因此,您必须有条件地打印它,即在每次迭代时,检查默认值并在条件合格时添加 selected="selected"。与您的情况一样,一种可能的解决方案是:

<select name="colSearchName" id="colSearchNameID">
<%
    int defaultValue = 1;
    colNameIter = content.columnNameIterator( );
    for ( int i = 0; colNameIter.hasNext( ); ++i ) {
%>
       <option value="<%= i %>"
       <% if (i == defaultValue) { %> selected="selected" <% } %>
       ><%= colNameIter.next( ) %></option>
<%
    }
%>
</select>