Атрибут value в теге <select>, не выбирающем параметр по умолчанию

Возможно, я не понимаю, но учитывая следующий html:

<select value="2">
    <option value="1">Something</option>
    <option value="2">Something else</option>
</select>

Я ожидал бы, что "что-то еще" будет выбранным по умолчанию. Однако, похоже, это не так. Почему это, и что я должен делать по-другому?

Ответ 1

Единственный способ иметь параметр по умолчанию - это выбрать в теге опции.

<SELECT>
<OPTION>Something
<OPTION SELECTED>Something Else

Ответ 2

Вы используете атрибут selected для элемента option для указания опции по умолчанию.

<select>
    <option value="1">Something</option>
    <option value="2" selected="selected">Something else</option> // this is default
</select>

select элементы не имеют атрибута value.

Ответ 3

Элемент <select> не имеет атрибута value, поэтому его игнорируют. Итак, у вас есть единственный выбор <select>, и ни один из его элементов <option> не имеет атрибута selected, это означает, что первый <option> принимается как выбор по умолчанию.

Ответ 4

Реакция JS

Некоторые реализации кодирования, такие как ReactJS, позволяют использовать атрибут value с тегом <select>, поэтому это будет абсолютно корректный код:

<select value="2">
    <option value="1">Something</option>
    <option value="2">Something else</option>
</select>

HTML с минимизацией атрибута:

Конечно, обычно вам нужно указать значение в состоянии, чтобы оно было обновляемым.

Однако, если вы используете чисто HTML, вы должны использовать атрибут selected в тэге <option> следующим образом:

<select>
    <option value="1">Something</option>
    <option value="2" selected>Something else</option>
</select>

HTML с полной спецификацией атрибута:

В приведенном выше примере используется минимизация атрибутов, но вы также можете указать полную форму:

<select>
    <option value="1">Something</option>
    <option value="2" selected="selected">Something else</option>
</select>

Ответ 5

Я знаю, что это сообщение довольно старое, но если кто-то еще борется с этим, вы можете реализовать функциональность, которую вы ищете, используя jquery.

Полный код с использованием php будет примерно таким

PHP

if ($_SERVER['REQUEST_METHOD']== "POST") {
$thing = $_POST['things'];
} else {
$thing ="";
}

HTML

<select name='things' value="<?php echo $thing; ?>">
    <option value="1">Something</option>
    <option value="2">Something else</option>
</select>

JQUERY

$(function() {
    $("select[value]").each(function() {
        $(this).val(this.getAttribute("value"));
    });
}); //end document ready

Это позволит выбрать выбранные пользователем параметры выбора, которые будут выбраны после того, как страница повторно загрузится через почту вместо возврата к значениям по умолчанию.