Установите выбор по умолчанию для раскрывающегося списка

<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-файла. <option> со значением 1 должно быть выбрано по умолчанию, но вместо этого используется <option> со значением 0. Установка value элемента <select> не помогает.


person Vamsi Ravi    schedule 24.07.2015    source источник
comment
Это не HTML. Что такое, аспид?   -  person j08691    schedule 24.07.2015


Ответы (2)


Это не то, как вы устанавливаете выбранный элемент. Вам нужно добавить атрибут 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>
person Bond    schedule 24.07.2015

Добавление атрибута value к Select не поможет, потому что в 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>
person AimZ    schedule 24.07.2015