Установить выбранную опцию окна выбора - PullRequest
321 голосов
/ 13 января 2011

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

$("#gate").val('Gateway 2');

с

<select id="gate">
    <option value='null'>- choose -</option>
    <option value='gateway_1'>Gateway 1</option>
    <option value='gateway_2'>Gateway 2</option>
</select>

Но это не работает.Есть идеи?

Ответы [ 15 ]

463 голосов
/ 13 января 2011

Это определенно должно работать. Вот демоверсия . Убедитесь, что вы поместили свой код в $(document).ready:

$(function() {
    $("#gate").val('gateway_2');
});
152 голосов
/ 13 января 2011
$(document).ready(function() {
    $("#gate option[value='Gateway 2']").prop('selected', true);
    // you need to specify id of combo to set right combo, if more than one combo
});
32 голосов
/ 03 сентября 2014

$('#gate').val('Gateway 2').prop('selected', true);

15 голосов
/ 08 июля 2016

Я обнаружил, что использование метода jQuery .val () имеет существенный недостаток.

<select id="gate"></select>
$("#gate").val("Gateway 2");

Если это поле выбора (или любой другой объект ввода) находится в форме и есть кнопка сбросаиспользуется в форме, когда при нажатии кнопки сброса установленное значение будет очищено и не будет сброшено до начального значения, как вы ожидаете.

Мне кажется, это работает лучше всего.

Для полей выбора

<select id="gate"></select>
$("#gate option[value='Gateway 2']").attr("selected", true);

Для ввода текста

<input type="text" id="gate" />
$("#gate").attr("value", "your desired value")

Для ввода текста

<textarea id="gate"></textarea>
$("#gate").html("your desired value")

Для флажков

<input type="checkbox" id="gate" />
$("#gate option[value='Gateway 2']").attr("checked", true);

Для радиокнопки

<input type="radio" id="gate" value="this"/> or <input type="radio" id="gate" value="that"/>
$("#gate[value='this']").attr("checked", true);
9 голосов
/ 20 марта 2017
  $("#form-field").val("5").trigger("change");
6 голосов
/ 13 января 2011

Это прекрасно работает. Смотрите эту скрипку: http://jsfiddle.net/kveAL/

Возможно, вам нужно объявить свой jQuery в обработчике $(document).ready()?

Кроме того, возможно, у вас есть два элемента с одинаковым идентификатором?

5 голосов
/ 18 апреля 2017

Это был бы другой вариант:

$('.id_100 option[value=val2]').prop('selected', true);
4 голосов
/ 13 мая 2017

У меня была такая же проблема.

Решение: добавить обновление.

$("#gate").val('Gateway 2');
$("#gate").selectmenu('refresh');
2 голосов
/ 25 января 2019

В некоторых случаях может быть

$('#gate option[value='+data.Gateway2+']').attr('selected', true);
2 голосов
/ 11 ноября 2018

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

document.querySelector("#gate option[value='Gateway 2']").setAttribute('selected',true);
<select id="gate">
    <option value='null'>- choose -</option>
    <option value='Gateway 1'>Gateway 1</option>
    <option value='Gateway 2'>Gateway 2</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...