jquery Установите выбранную опцию в поле выбора





7 Answers

$(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
});
jquery html jquery-selectors html-select

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

$("#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>

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




Я нашел использование метода 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);



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

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

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




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

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

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



$(function() {
$("#demo").val('hello');
});



У меня была проблема, когда значение не было установлено из-за синтаксической ошибки перед вызовом.

$("#someId").value(33); //script bailed here without showing any errors Note: .value instead of .val
$("#gate").val('Gateway 2'); //this line didn't work.

Проверьте наличие синтаксических ошибок перед вызовом.




Дополнение к @icksde и @Korah (thx both!)

При создании параметров с помощью AJAX document.ready может быть запущен до создания списка, поэтому

Это не работает

$(document).ready(function() {
    $("#gate").val('Gateway 2');
});

Это делает

Тайм-аут работает, но поскольку @icksde говорит, что он хрупкий (мне действительно понадобилось 20 мс вместо 10 мс). Лучше поместить его в функцию AJAX следующим образом:

$("#someObject").change(function() {
    $.get("website/page.php", {parameters}, function(data) {
        $("#gate").append("<option value='Gateway 2'">" + "Gateway 2" + "</option>");
        $("#gate").val('Gateway 2');
    }, "json");
});



Related