Я хочу установить параметр, который был выбран ранее, чтобы отображаться при загрузке страницы. Я попробовал это с помощью следующего кода:
$("#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>
Но это не работает. Есть идеи?
Ответ 1
Это определенно должно работать. Здесь демо. Убедитесь, что вы поместили свой код в $(document).ready
:
$(function() {
$("#gate").val('gateway_2');
});
Ответ 2
$(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
});
Ответ 3
$('#gate').val('Gateway 2').prop('selected', true);
Ответ 4
Я нашел использование метода jQuery.val(), чтобы иметь существенный недостаток.
<select id="gate"></select>
$("#gate").val("Gateway 2");
Если этот флажок выбора (или любой другой входной объект) находится в форме и в форме используется кнопка reset, когда нажата кнопка reset, установленное значение будет очищено, а не reset к начальному значению, как и следовало ожидать.
Кажется, это работает лучше для меня.
Для флажков выбора
<select id="gate"></select>
$("#gate option[value='Gateway 2']").attr("selected", true);
Для текстовых входов
<input type="text" id="gate" />
$("#gate").attr("value", "your desired value")
Для входов textarea
<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);
Ответ 5
$("#form-field").val("5").trigger("change");
Ответ 6
Это отлично работает. Смотрите эту скрипку: http://jsfiddle.net/kveAL/
Возможно, вам нужно объявить свой jQuery в обработчике $(document).ready()
?
Кроме того, возможно, у вас есть два элемента с одинаковым идентификатором?
Ответ 7
Это будет другой вариант:
$('.id_100 option[value=val2]').prop('selected', true);
Ответ 8
У меня была та же проблема.
Решение: добавьте обновление.
$("#gate").val('Gateway 2');
$("#gate").selectmenu('refresh');
Ответ 9
Моя проблема
get_courses(); //// To load the course list
$("#course").val(course); //// Setting default value of the list
У меня была такая же проблема. Единственное отличие от вашего кода заключается в том, что я загружал окно выбора через вызов ajax, и как только был выполнен вызов ajax, я установил значение по умолчанию в поле выбора
Решение
get_courses();
setTimeout(function() {
$("#course").val(course);
}, 10);
Ответ 10
Я знаю, что есть несколько итераций ответов, но теперь это не требует 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>
Ответ 11
Некоторые случаи могут быть
$('#gate option[value='+data.Gateway2+']').attr('selected', true);
Ответ 12
У меня была проблема, когда значение не было установлено из-за синтаксической ошибки перед вызовом.
$("#someId").value(33); //script bailed here without showing any errors Note: .value instead of .val
$("#gate").val('Gateway 2'); //this line didn't work.
Проверьте наличие синтаксических ошибок перед вызовом.
Ответ 13
// Make option have a "selected" attribute using jQuery
var yourValue = "Gateway 2";
$("#gate").find('option').each(function( i, opt ) {
if( opt.value === yourValue )
$(opt).attr('selected', 'selected');
});
Ответ 14
$(function() {
$("#demo").val('hello');
});
Ответ 15
Дополнение к @icksde и @Korah (спасибо 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");
});