设置选择框的选定选项

我想设置一个之前被选中的选项,在页面加载时显示。我试着用下面的代码。

$("#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)
解决办法

这肯定会起作用。[这里有一个演示][1]。确保你已经把你的代码放在了$(document).ready中。

$(function() {
    $("#gate").val('gateway_2');
});
评论(11)
$(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
});
评论(1)

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

评论(3)

我发现使用jQuery .val()方法有一个很大的缺点。


<select id="gate">
评论(0)
  $("#form-field").val("5").trigger("change");
评论(1)

这样做效果很好。请看这个谜题:http://jsfiddle.net/kveAL/

可能你需要在$(document).ready()处理程序中声明你的jQuery?

另外,你可能有两个具有相同ID的元素?

评论(0)

这将是另一种选择。

$('.id_100 option[value=val2]').prop('selected', true);
评论(0)

我也有同样的问题。

解决方法 增加一个刷新。

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

有些情况可能是

$('#gate option[value='+data.Gateway2+']').attr('selected', true);
评论(0)

我知道有好几个答案的迭代,但现在这不需要jquery或任何其他外部库,只需用下面的方法就可以很容易地完成。

<!--开始片段。 js hide: false console.true babel: true true babel.false --> -- begin snippet: js hide: false console: true false -->

document.querySelector("#gate option[value='Gateway 2']").setAttribute('selected',true);

<select id="gate">
    - choose -
    Gateway 1
    Gateway 2
评论(0)

我的问题

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);
评论(1)
$(function() {
$("#demo").val('hello');
});
评论(0)
// 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');
});
评论(2)

我遇到了一个问题,在调用前由于语法错误,导致值没有设置。

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

在调用前检查语法错误。

评论(1)

对 @icksde 和 @Korah 的补充 (thx both!)

*当使用AJAX构建选项**时,document.ready可能会在列表构建之前被触发,所以...。

这不工作

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

这就是

超时确实有效,但正如 @icksde 所说,它很脆弱(我实际上需要 20ms 而不是 10ms)。 最好把它放在AJAX函数里面,像这样。


$("#someObject").change(function() {
    $.get("website/page.php", {parameters}, function(data) {
        $("#gate").append("
评论(0)