jQuery-如何根据值选择下拉项


85

我想将一个下拉列表(选择)设置为基于条目的值进行更改。

我有

<select id="mySelect">
  <option value="ps">Please Select</option>
  <option value="ab">Fred</option>
  <option value="fg">George</option>
  <option value="ac">Dave</option>
</select>

而且我知道我想更改下拉菜单,以便选择值为“ fg”的选项。如何使用JQuery做到这一点?


我以为就是这么简单,但是似乎没有用。我想这是调试时间。
Mark W


1
您的标题有点误导。您没有选择下拉列表,而是在下拉列表中选择了一个选项...这就是为什么有7个答案根本无法帮助我的原因...
user1566694 2016年

@ user1566694如果您想获得技术知识,实际上并没有将其称为下拉菜单,而是“选择”
Mark W

Answers:


152

你应该用

$('#dropdownid').val('selectedvalue');

这是一个例子:

$('#dropdownid').val('selectedvalue');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='dropdownid'>
    <option value=''>- Please choose -</option>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='selectedvalue'>There we go!</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
    <option value='5'>5</option>
</select>


21
同意以上。根据您的代码,它将是$('#mySelect option[value="fg"]').attr('selected', true)
Martavis P.

我的错。我看到它在某些情况下不起作用,但显然在提琴琴中起作用。
Martavis P.

2
我只是要小心一点。它不会在<select>标记上触发'change'事件。如果您不使用该事件,那很好。
乍得·费舍尔

2
@ChadFisher如果您使用的是change事件,请通过$('#dropdownid').val('selectedvalue').trigger('change');
Liam

确实,当您编写了一些后续代码来执行某些操作(例如模型更新)时,触发器更改会有所帮助,即使DD的change事件也发生了ASP.net视图模型更新。+1
Div Tiwari

23
$('#yourdropddownid').val('fg');

(可选)

$('select>option:eq(3)').attr('selected', true);

3所需选项的索引在哪里。

现场演示



8

您可以使用下面的jQuery代码,我很容易使用它:

$('#your_id [value=3]').attr('selected', 'true');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<select id="your_id" name="name" class="form-control input-md">
  <option value="1">Option #1</option>
  <option value="2">Option #2</option>
  <option value="3">Option #3</option>
  <option value="4">Option #4</option>
  <option value="5">Option #5</option>
  <option value="6">Option #6</option>
  <option value="7">Option #7</option>
</select>


7
 $('#mySelect').val('ab').change();

 // or

 $('#mySelect').val('ab').trigger("change");

1
或$('#mySelect')。val('ab')。trigger(“ change”);;或 如果您使用的是select2插件。
Vaibhav Jain

1
.change()帮助我更新了ASP.net MVC模型属性。谢谢你的回答。
Div Tiwari

谢谢... .trigger('change')完美地工作!
LUISAO

5

您可以简单地使用:

$('#select_id').val('fg')


2

回答可能为时已晚,但至少有人会得到帮助。

您可以尝试两种选择:

这是您要基于索引值分配的结果,其中“ 0”是索引。

 $('#mySelect').prop('selectedIndex', 0);

不要使用'attr',因为最新的jquery已弃用它。

当您要基于选项值进行选择时,请选择以下选项:

 $('#mySelect').val('fg');

其中“ fg”是期权价值


基于索引的选择很少使用,但是鉴于您已经编写了一些通用代码来设置下拉列表并且值随不同DD的变化而变化的情况,这是一个不错的选择。谢谢 :)。
Div Tiwari

1

$('#dropdownid').val('selectedvalue');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id='dropdownid'>
    <option value=''>- Please choose -</option>
    <option value='1'>1</option>
    <option value='2'>2</option>
    <option value='selectedvalue'>There we go!</option>
    <option value='3'>3</option>
    <option value='4'>4</option>
    <option value='5'>5</option>
</select>


1

这段代码对我有用:

$(function() {
    $('[id=mycolors] option').filter(function() { 
        return ($(this).text() == 'Green'); //To select Green
    }).prop('selected', true);
});

使用此HTML选择列表:

<select id="mycolors">
      <option value="1">Red</option>
      <option value="2">Green</option>
      <option value="3">Blue</option>
</select>

0

我有另一种情况,下拉列表值已经被硬编码。只有12个地区,因此jQuery Autocomplete UI控件不会被代码填充。

解决方案要容易得多。因为我不得不遍历假定控件正在动态加载的其他帖子,所以没有找到我需要的东西,然后终于找到了答案。

因此,在具有如下所示HTML的位置,设置选定索引的设置是这样的,请注意-input部分,它是下拉ID的补充:

$('#project-locationSearch-dist-input').val('1');

                <label id="lblDistDDL" for="project-locationSearch-input-dist" title="Select a district to populate SPNs and PIDs or enter a known SPN or PID." class="control-label">District</label>
                <select id="project-locationSearch-dist" data-tabindex="1">
                    <option id="optDistrictOne" value="01">1</option>
                    <option id="optDistrictTwo" value="02">2</option>
                    <option id="optDistrictThree" value="03">3</option>
                    <option id="optDistrictFour" value="04">4</option>
                    <option id="optDistrictFive" value="05">5</option>
                    <option id="optDistrictSix" value="06">6</option>
                    <option id="optDistrictSeven" value="07">7</option>
                    <option id="optDistrictEight" value="08">8</option>
                    <option id="optDistrictNine" value="09">9</option>
                    <option id="optDistrictTen" value="10">10</option>
                    <option id="optDistrictEleven" value="11">11</option>
                    <option id="optDistrictTwelve" value="12">12</option>
                </select>

其他有关自动完成控件的问题是如何正确禁用/清空它。我们有3个控件协同工作,其中2个互斥:

//SPN
spnDDL.combobox({
    select: function (event, ui) {
        var spnVal = spnDDL.val();
        //fire search event
        $('#project-locationSearch-pid-input').val('');
        $('#project-locationSearch-pid-input').prop('disabled', true);
        pidDDL.empty(); //empty the pid list
    }
});
//get the labels so we have their tool tips to hand.
//this way we don't set id values on each label
spnDDL.siblings('label').tooltip();

//PID
pidDDL.combobox({
    select: function (event, ui) {
        var pidVal = pidDDL.val();
        //fire search event
        $('#project-locationSearch-spn-input').val('');
        $('#project-locationSearch-spn-input').prop('disabled', true);
        spnDDL.empty(); //empty the spn list
    }
});

其中一些超出了帖子的范围,我不知道确切地放在哪里。由于这是非常有用的,并且花了一些时间来弄清楚,因此正在共享。

同样,要启用这样的控件,它(禁用,错误)和非(启用,true)也要花一些时间才能弄清楚。:)

除了帖子之外,还有一点需要注意的是:

    /*
Note, when working with the jQuery Autocomplete UI control,
the xxx-input control is a text input created at the time a selection
from the drop down is picked.  Thus, it's created at that point in time
and its value must be picked fresh.  Can't be put into a var and re-used
like the drop down list part of the UI control.  So you get spnDDL.empty()
where spnDDL is a var created like var spnDDL = $('#spnDDL);  But you can't
do this with the input part of the control.  Winded explanation, yes.  That's how
I have to do my notes or 6 months from now I won't know what a short hand note means
at all. :) 
*/
    //district
    $('#project-locationSearch-dist').combobox({
        select: function (event, ui) {
            //enable spn and pid drop downs
            $('#project-locationSearch-pid-input').prop('disabled', false);
            $('#project-locationSearch-spn-input').prop('disabled', false);
            //clear them of old values
            pidDDL.empty();
            spnDDL.empty();
            //get new values
            GetSPNsByDistrict(districtDDL.val());
            GetPIDsByDistrict(districtDDL.val());
        }
    });

所有人共享,是因为花了很长时间才能即时学习这些东西。希望这会有所帮助。


您已经离开了这里的话题。问题是使用JQuery根据其值对select进行简单更改。没有涉及UI元素。
Mark W


0

您可以按名称选择下拉选项值

// deom
jQuery("#option_id").find("option:contains('Monday')").each(function()
{
 if( jQuery(this).text() == 'Monday' )
 {
  jQuery(this).attr("selected","selected");
  }

});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.