Каково значение выбора, когда выбран отключенный параметр? - PullRequest
0 голосов
/ 17 декабря 2018

Я использую следующий html, чтобы получить выбранную по умолчанию отключенную опцию «Выберите город» в качестве заполнителя.

<select name="town">
    <option selected disabled value="xx">-- Select a town --</option>
    <option value="xx">Paris</option>
    <option value="xx">London</option>
    <option value="xx">Budapest</option>
</select>

Теперь я хотел бы проверить, был ли выбран пользователем какой-либо параметр или он по-прежнему пуст.
Я думал, что при тестировании выбранного значения с помощью jquery ($('select[name="town"]').val();) будет возвращенозначение "xx".
Вместо этого .val() возвращает ноль.

Я не нашел никаких следов этого поведения в документе (http://api.jquery.com/val/).

Можно ли положиться на .val() возвращает ноль, когда выбран отключенный параметр? Это где-нибудь задокументировано?

Или мне нужно проверять как нулевое, так и фактическое значение атрибута value ("xx" в приведенном выше примере)

1 Ответ

0 голосов
/ 18 декабря 2018

Вы не можете выбрать отключенную опцию, поэтому значение (независимо от того, что вы установили как) всегда будет возвращать null.Это предполагаемое поведение.

Хотя в документах не указано, какие параметры отключены, оно говорит:

, если никакие параметры не выбраны, но возвращает пустой массив;до jQuery 3.0 возвращается null

Этого также можно ожидать от отключенных опций.Вы все еще можете проверить это!

Мы можем проверить, возвращает ли значение null, используя оператор if.Следующий оператор if вернет true, если значение не null

if ($('select[name="town"]').val() != null) {
   console.log('Option selected.');
}

Если вы хотите проверить другие параметры, вы можете заменить != null на == value.По сути, вы можете использовать это как кратное выражение if, else if, else.


В качестве альтернативы вы можете получить значение отключенного выбранного параметра следующим образом:

$('select[name="town"] option[disabled]:selected').val();

Благодаря этому ТАК ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...