正如问题所说,我如何使用jQuery设置下拉列表控件的值?


当前回答

如果你加载所有<options ....></options>通过Ajax调用 按照下面的步骤来做。

1).创建一个单独的下拉值设置方法 为例:

function set_ip_base_country(countryCode)
    $('#country').val(countryCode)
} 

2).当ajax调用成功所有html追加任务完成时调用此方法

为例:

success: function (doc) {
  .....
  .....
  $("#country").append('<option style="color:black;" value="' + key + '">'  +   value + '</option>')
  set_ip_base_country(ip_base_country)
}

其他回答

对于使用Bootstrap的人,使用$(#elementId').selectpicker('val','elementValue')而不是$('#elementId').val('elementValue'),因为后者不会更新UI中的值。

注意:即使.change()函数也可以工作,正如上面在一些回答中所建议的那样,但它会触发$('#elementId').change(function(){//do something})函数。

只是把这个贴出来,以便将来有人引用这个帖子。

如果你使用索引,你可以直接用.attr()设置所选索引:

$("#mydropdownlist").attr('selectedIndex', 0);

这将把它设置为下拉列表中的第一个值。

编辑: 我上面的方法过去很管用。但现在似乎不再是了。

但正如韩寒在评论中愉快地指出的那样,正确的做法是:

$("#mydropdownlist").get(0).selectedIndex = index_here;
$("#mydropdownlist").val("thevalue");

只要确保选项标签中的值与val方法中的值匹配即可。

//Html下拉列表的格式。

<select id="MyDropDownList">
<option value=test1 selected>test1</option>
<option value=test2>test2</option>
<option value=test3>test3</option>
<option value=test4>test4</option>

//如果你想使用javascript将选中的Item更改为test2。试试这个。 //设置你想要选择的下一个选项

var NewOprionValue = "Test2"

        var RemoveSelected = $("#MyDropDownList")[0].innerHTML.replace('selected', '');
        var ChangeSelected = RemoveSelected.replace(NewOption, NewOption + 'selected>');
        $('#MyDropDownList').html(ChangeSelected);

下面是一个快速设置所选选项的函数:

function SetSelected(elem, val){
        $('#'+elem+' option').each(function(i,d){
        //  console.log('searching match for '+ elem + '  ' + d.value + ' equal to '+ val);
            if($.trim(d.value).toLowerCase() == $.trim(val).toLowerCase()){
        //      console.log('found match for '+ elem + '  ' + d.value);
                $('#'+elem).prop('selectedIndex', i);
            }
        });
    }

使用参数element id和所选值调用此函数;是这样的:

SetSelected('selectID','some option');

当有很多选择选项需要设置时,它很有用。