我有一个选择字段,其中有一些选项。现在我需要用jQuery选择其中一个选项。但是,当我只知道必须选择的选项的值时,我该怎么做呢?

我有以下HTML:

<div class="id_100">
  <select>
    <option value="val1">Val 1</option>
    <option value="val2">Val 2</option>
    <option value="val3">Val 3</option>
  </select>
</div>

我需要选择值为val2的选项。如何做到这一点呢?

这是一个演示页面: http://jsfiddle.net/9Stxb/


当前回答

$ (" # graphtype选项(value = " ")”)。道具(“选择”,真正的);

当#graphtype是选择标记的id时,这种方法效果很好。

示例选择标签:

<select name="site" id="site" class="form-control" onchange="getgraph1(this.options[this.selectedIndex].value);">
   <option value="" selected>Site</option>
   <option value="sitea">SiteA</option>
   <option value="siteb">SiteB</option>
 </select>

其他回答

我认为最简单的方法是选择设置val(),但你可以检查以下。查看如何处理选择和选项标签在jQuery?有关选项的详细信息。

$('div.id_100  option[value="val2"]').prop("selected", true);

$('id_100').val('val2');

没有优化,但下面的逻辑在某些情况下也很有用。

$('.id_100 option').each(function() {
    if($(this).val() == 'val2') {
        $(this).prop("selected", true);
    }
});

.attr()有时在旧版本的jQuery中不起作用,但你可以使用.prop():

$('select#ddlCountry option').each(function () {
    if ($(this).text().toLowerCase() == co.toLowerCase()) {
        $(this).prop('selected','selected');
        return;
    }
});

当控件是动态创建的,而不是在静态HTML页面中时,选择下拉控件没有动态更改,这似乎是一个问题。

在jQuery中,这个解决方案为我工作。

$('#editAddMake').val(result.data.make_id);
$('#editAddMake').selectmenu('refresh');

就像附录一样,第一行代码没有第二行,实际上是透明的,在设置索引后检索所选索引是正确的,如果您实际单击控件,它将显示正确的项目,但这并没有反映在控件的顶部标签中。

我已经准备了一个小的JQuery扩展,删除所有不必要的选项和隐藏所选的选项,用户只看到一个值在选择字段

$.prototype.makeReadOnly = function (canClick = false) {
    $(this).each(function () {
        $(this).readonly = true;
        if ($(this).is("select")) {
            if(!canClick) $(this).mousedown(function () { event.preventDefault(); }).keydown(function () { event.preventDefault(); });
            $(this).find('option:not(:selected)').remove();
            $(this).find('option').hide();
        }
    });
}

然后你可以让所有的选择都是只读的

$("select").makeReadOnly();

或者只选择特定的只读类

$("select.read-only").makeReadOnly();

这里有很多解决方案来改变所选的值,但没有一个对我有用,因为我的挑战与操作略有不同。我需要根据这个值过滤另一个选择下拉。

大多数人使用$("div.id_100").val("val2").change();让它为他们工作。我不得不稍微修改这个$("div#idOfDiv select").val("val2").trigger("change")。

这还不够,我还必须确保等待文档加载。我的完整代码如下所示:

$(document).ready(function() {
    $("div#idOfDiv select").val("val2").trigger("change");
});