按值设置选择选项"已选择"

w00*_*w00 888 jquery html-select jquery-selectors

我有一个select字段,里面有一些选项.现在我需要选择其中一个options使用jQuery.但是,我怎么能做到这一点时,我只知道valueoption是一定要选择?

我有以下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>
Run Code Online (Sandbox Code Playgroud)

我需要选择有价值的选项val2.如何才能做到这一点?

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

pin*_*422 1436

有一种更简单的方法,不需要你进入options标签:

$("div.id_100 select").val("val2");
Run Code Online (Sandbox Code Playgroud)

看看这个jQuery方法.

  • 我不得不手动调用`.val(x).change();`来触发select的onChange事件,似乎设置val()不会触发它. (121认同)
  • 问题的海报开头是:"我有一个选择字段,其中包含一些选项......"因此它不是空的,因此解决方案仍然正确. (18认同)
  • 这可能导致在空选择框中出现FF(至少)中的错误 (14认同)
  • 注意:val()可以设置选项中不存在的值. (11认同)
  • @JamesCazzetta向val发送一个数组:`.val(["Multiple2","Multiple3"])`.http://api.jquery.com/val/#val-value (8认同)
  • 如果这对您不起作用,请记住 $("div.id_100 select") 正在选择 &lt;div class="id-100"&gt;&lt;select .../&gt; 元素。出于测试目的,请尝试: $('select').val(the_value); 这仅当您的页面中有一个 &lt;select&gt; 元素时。请根据需要进行修改。另外,请记住在脚本运行之前确保元素在 DOM 中。 (4认同)

Kir*_*lev 390

要选择值为"val2"的选项:

$('.id_100 option[value=val2]').attr('selected','selected');
Run Code Online (Sandbox Code Playgroud)

  • 你应该使用:.prop('selected',true)然而,很好的答案 (141认同)
  • 如果期望值可能是或不是一个选项,这是最佳解决方案,如果不是一个选项,您不想进行更改.如果在select上使用`.val()`并尝试选择一个不存在的值,它将取消选择所有内容. (3认同)
  • 另外,我使用了__` $("select [name = foo]选项[value = bar]).attr('selected','selected');`__也适用于我测试的所有浏览器. (3认同)
  • 值得注意的是,如果选择下拉列表已隐藏,这将不起作用,因此在我的情况下,我使用的是选择 boxit 插件,但尝试触发选择框更改,因此带有 onchange 处理程序的下拉列表的原始代码仍将运行。只需要更新新元素的代码,即 selectboxit 元素 (3认同)

jit*_*hit 285

change()选择值后使用该事件.来自文档:

如果该字段在没有更改内容的情况下失去焦点,则不会触发该事件.要手动触发事件,请.change()不带参数应用:

$("#select_id").val("val2").change();
Run Code Online (Sandbox Code Playgroud)

更多信息请访问.change().

  • 这值得更多的赞成,属于顶级.它是正确的方式,没有摆弄'prop`,`attr`等,并正确地推进所有事件. (15认同)
  • 如果您已经有一个绑定要更改的侦听器,这将导致无限循环。 (3认同)

sil*_*lly 53

首先取消选择全部并过滤可选选项:

$('.id_100 option')
     .removeAttr('selected')
     .filter('[value=val1]')
         .attr('selected', true)
Run Code Online (Sandbox Code Playgroud)

  • 在这里,最好的一个.为了将来的使用,我认为我们应该使用prop而不是attr. (5认同)
  • 所选属性的值可以是空字符串或"selected".你的意思是`.prop()`? (2认同)
  • 好答案。如果选项中的值不存在,则接受的答案以空选择结尾。 (2认同)

Dev*_*per 42

<select name="contribution_status_id" id="contribution_status_id" class="form-select">
    <option value="1">Completed</option>
    <option value="2">Pending</option>
    <option value="3">Cancelled</option>
    <option value="4">Failed</option>
    <option value="5">In Progress</option>
    <option value="6">Overdue</option>
    <option value="7">Refunded</option>
Run Code Online (Sandbox Code Playgroud)

按值设置为待定状态

   $('#contribution_status_id').val("2");
Run Code Online (Sandbox Code Playgroud)


Tar*_*ran 35

对我来说,以下是这项工作

$("div.id_100").val("val2").change();
Run Code Online (Sandbox Code Playgroud)


小智 26

我认为最简单的方法是选择设置val(),但您可以检查以下内容.请参阅如何在jQuery中处理select和option标记?有关选项的更多详细信息.

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

$('id_100').val('val2');
Run Code Online (Sandbox Code Playgroud)

未经优化,但以下逻辑在某些情况下也很有用.

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


Run*_* FS 17

您可以使用属性选择器选择任何属性及其值[attributename=optionalvalue],因此在您的情况下,您可以选择该选项并设置所选属性.

$("div.id_100 > select > option[value=" + value + "]").prop("selected",true);
Run Code Online (Sandbox Code Playgroud)

value您希望选择的值在哪里.

如果您需要删除任何先前选择的值,如果多次使用它,您需要稍微更改它,以便首先删除所选属性

$("div.id_100 option:selected").prop("selected",false);
$("div.id_100 option[value=" + value + "]")
        .prop("selected",true);
Run Code Online (Sandbox Code Playgroud)


sif*_*_in 15

您可以使用不同的方法来实现这一点:(
请记住,如果要操作一个元素,最好给它一个 id 或类,而不是让它的父元素一个 id 或类)。
在这里,由于 div 有一个类来定位其中的选择,代码将是:

$("div.id_100 select").val("val2");
Run Code Online (Sandbox Code Playgroud)

或者

$('div.id_100  option[value="val2"]').prop("selected", true);
Run Code Online (Sandbox Code Playgroud)

如果该类被赋予选择自身,代码将是:

$(".id_100").val("val2");
Run Code Online (Sandbox Code Playgroud)

或者

$('.id_100 option[value=val2]').attr('selected','selected');
Run Code Online (Sandbox Code Playgroud)

或者

$('.id_100 option')
    .removeAttr('selected')
    .filter('[value=val1]')
    .attr('selected', true);
Run Code Online (Sandbox Code Playgroud)

要动态传递值,代码将是: value
="val2";

$("div.id_100 select").val(valu);
$("div.id_100 > select > option[value=" + valu + "]").prop("selected",true);
Run Code Online (Sandbox Code Playgroud)

如果元素是通过 ajax 添加的,则必须为元素提供 'id' 并使用
window.document.getElementById 否则您必须为元素提供 'class' 并使用
window.document.getElementById

您还可以通过索引号选择 select 元素的值。
如果您为 select 元素提供了 ID,代码将是:

window.document.getElementById('select_element').selectedIndex = 4;
Run Code Online (Sandbox Code Playgroud)

请记住,当您如上所述更改选择值时,不会调用更改方法。
即,如果您已编写代码来对选择的更改执行一些操作,则上述方法将更改选择值,但不会触发更改。
要触发更改功能,您必须在最后添加 .change() 。所以代码将是:

$("#select_id").val("val2").change();
Run Code Online (Sandbox Code Playgroud)


Man*_*jot 14

一个简单的答案是,在HTML

<select name="ukuran" id="idUkuran">
    <option value="1000">pilih ukuran</option>
    <option value="11">M</option>
    <option value="12">L</option>
    <option value="13">XL</option>
</select>
Run Code Online (Sandbox Code Playgroud)

在jquery上,通过按钮或其他任何方式调用下面的函数

$('#idUkuran').val(11).change();
Run Code Online (Sandbox Code Playgroud)

它简单而且100%有效,因为它取自我的工作...... :)希望它的帮助..

  • 这是一个可选的,您可以根据需要进行修改.. :) (2认同)

Nic*_*sai 12

change()设置选择值后最好使用.

$("div.id_100 select").val("val2").change();
Run Code Online (Sandbox Code Playgroud)

通过这样做,代码将接近用户更改选择,解释包含在JS Fiddle中:

JS小提琴


Pra*_*ran 11

最简单的方法是:

HTML

<select name="dept">
   <option value="">Which department does this doctor belong to?</option>
   <option value="1">Orthopaedics</option>
   <option value="2">Pathology</option>
   <option value="3">ENT</option>
</select>
Run Code Online (Sandbox Code Playgroud)

jQuery的

$('select[name="dept"]').val('3');
Run Code Online (Sandbox Code Playgroud)

输出:这将激活ENT.


小智 10

$('#graphtype option[value=""]').prop("selected", true);

这适用#graphtype于select标签的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>
Run Code Online (Sandbox Code Playgroud)


Dan*_*ras 10

最好的方法是这样的:

$(`#YourSelect option[value='${YourValue}']`).prop('selected', true);
Run Code Online (Sandbox Code Playgroud)


Yit*_*hak 9

没有理由去讨论这个问题,你所做的只是访问和设置一个属性.而已.

好吧,所以一些基本的dom: 如果你是用直接的JavaScript做这个,你会这样:

window.document.getElementById('my_stuff').selectedIndex = 4;
Run Code Online (Sandbox Code Playgroud)

但你不是用直接的JavaScript做的,而是用jQuery做的.在jQuery中,您希望使用.prop()函数来设置属性,因此您可以这样做:

$("#my_stuff").prop('selectedIndex', 4);
Run Code Online (Sandbox Code Playgroud)

无论如何,只要确保你的id是唯一的.否则,你会在墙上撞到脑袋,想知道为什么这不起作用.


jAC*_*jAC 9

这里有很多解决方案可以更改所选值,但没有一个对我有用,因为我的挑战与 OP 略有不同。我需要根据该值过滤另一个选择下拉列表。

大多数人过去$("div.id_100").val("val2").change();都让它为他们工作。我不得不稍微修改一下$("div#idOfDiv select").val("val2").trigger("change")

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

$(document).ready(function() {
    $("div#idOfDiv select").val("val2").trigger("change");
});
Run Code Online (Sandbox Code Playgroud)


小智 8

使用:

$("div.id_100 > select > option[value=" + value + "]").attr("selected",true);
Run Code Online (Sandbox Code Playgroud)

这适合我.我正在使用此代码解析fancybox更新表单中的值,而我在app.js中的完整源代码是:

jQuery(".fancybox-btn-upd").click(function(){
    var ebid = jQuery(this).val();

    jQuery.ajax({
        type: "POST",
        url: js_base_url+"manajemen_cms/get_ebook_data",
        data: {ebookid:ebid},
        success: function(transport){
            var re = jQuery.parseJSON(transport);
            jQuery("#upd-kategori option[value="+re['kategori']+"]").attr('selected',true);
            document.getElementById("upd-nama").setAttribute('value',re['judul']);
            document.getElementById("upd-penerbit").setAttribute('value',re['penerbit']);
            document.getElementById("upd-tahun").setAttribute('value',re['terbit']);
            document.getElementById("upd-halaman").setAttribute('value',re['halaman']);
            document.getElementById("upd-bahasa").setAttribute('value',re['bahasa']);

            var content = jQuery("#fancybox-form-upd").html();
            jQuery.fancybox({
                type: 'ajax',
                prevEffect: 'none',
                nextEffect: 'none',
                closeBtn: true,
                content: content,
                helpers: {
                    title: {
                        type: 'inside'
                    }
                }
            });
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

我的PHP代码是:

function get_ebook_data()
{
    $ebkid = $this->input->post('ebookid');
    $rs = $this->mod_manajemen->get_ebook_detail($ebkid);
    $hasil['id'] = $ebkid;
    foreach ($rs as $row) {
        $hasil['judul'] = $row->ebook_judul;
        $hasil['kategori'] = $row->ebook_cat_id;
        $hasil['penerbit'] = $row->ebook_penerbit;
        $hasil['terbit'] = $row->ebook_terbit;
        $hasil['halaman'] = $row->ebook_halaman;
        $hasil['bahasa'] = $row->ebook_bahasa;
        $hasil['format'] = $row->ebook_format;
    }
    $this->output->set_output(json_encode($hasil));
}
Run Code Online (Sandbox Code Playgroud)


Rav*_*dje 8

var opt = new Option(name, id);
$("#selectboxName").append(opt);
opt.setAttribute("selected","selected");
Run Code Online (Sandbox Code Playgroud)


小智 7

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

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


小智 6

这对于Select Control来说肯定有效:

$('select#ddlCountry option').each(function () {
if ($(this).text().toLowerCase() == co.toLowerCase()) {
    this.selected = true;
    return;
} });
Run Code Online (Sandbox Code Playgroud)


Maj*_*han 5

尝试这个。

它简单而有效,JavaScript + jQuery,致命的组合。

选择组件:

<select id="YourSelectComponentID">
    <option value="0">Apple</option>
    <option value="2">Banana</option>
    <option value="3">Cat</option>
    <option value="4">Dolphin</option>
</select>
Run Code Online (Sandbox Code Playgroud)

选择:

document.getElementById("YourSelectComponentID").value = 4;
Run Code Online (Sandbox Code Playgroud)

现在您的选项 4 将被选中。您可以执行此操作,以默认选择启动时的值。

$(function(){
   document.getElementById("YourSelectComponentID").value = 4;
});
Run Code Online (Sandbox Code Playgroud)

或者创建一个简单的函数,将行放入其中,然后在任何事件上调用该函数来选择选项

jQuery + JavaScript 的混合发挥了神奇的作用......


Ivi*_*pić 5

这是一个简单的函数,其作用类似于 jQuery 插件。

    $.fn.selectOption = function(val){
        this.val(val)
        .find('option')
        .removeAttr('selected')
        .parent()
        .find('option[value="'+ val +'"]')
        .attr('selected', 'selected')
        .parent()
        .trigger('change');

        return this;
    };
Run Code Online (Sandbox Code Playgroud)

你只需简单地做这样的事情:

$('.id_100').selectOption('val2');
Run Code Online (Sandbox Code Playgroud)

之所以使用它,是因为你将选定的语句更改为跨浏览器支持的 DOM,并且也会触发更改以便你可以捕获它。

它基本上是人类动作模拟。


小智 5

这个对我有用

$("#id_100").val("val2");
Run Code Online (Sandbox Code Playgroud)