jQuery检索并设置html select元素的选定选项值


126

我正在尝试使用jQuery检索和设置选择元素(下拉列表)的选定值。

对于我尝试过的检索$("#myId").find(':selected').val(),以及$("#myId").val()都返回未定义。

任何对此问题的见解将不胜感激。


如果您使用的是ASP .NET,则渲染后它们的ID可能会不同!
Rigobert Song

Answers:


154

您目前拥有的方式是正确的。选择的ID可能不是您所说的,或者dom中存在一些问题。

在W3c的此处检查元素的ID并检查您的标记验证。

没有有效的dom,jQuery无法与选择器一起正常使用。

如果ID正确且您的dom验证了身份,则适用以下条件:

读取选择选项值

$('#selectId').val();

设置选择选项值

$('#selectId').val('newValue');

阅读所选文本

$('#selectId>option:selected').text();

@ Html.DropDownList(“ CoinTypes”,(SelectList)ViewBag.RequiredLevel,新的{@class =“ form-control”,@ style =“ height:21px; margin-top:5px;”})但是$('#CoinTypes ').val(@ ViewBag.CoinType); 没有选择
Nithin Paul 2015年

@NithinPaul真的没有评论,要问一个显示html的问题,以便有人可以实际尝试找出问题所在。不知道您如何期望任何人可以从某些webforms / mvc代码中解决问题!
redsquare

248

要获取/设置select元素的实际selectedIndex属性,请使用:

$("#select-id").prop("selectedIndex");

$("#select-id").prop("selectedIndex",1);

19
请务必注意,prop()功能是在1.6版中实现的,因此以前的版本没有此功能。
RobB 2011年

18
我喜欢这个答案,因为它实际上回答了访问索引的问题,而不仅仅是访问值。
巴勃罗·迪亚兹

4
是的 我认为这是原始问题。
杰克·霍尔特

您可能还可以使用具有相同语法的attr,并且可以。
伊扎克

7
@ M.YitzhakSamuel .attr().prop()不是同义词。在某些属性同时也是属性(例如.attr('id')等于)的情况下,它将起作用.prop('id')。在这种情况下,.prop('selectedIndex')等于.get(0).selectedIndex
WynandB

7

$('#myId').val() 应该这样做,否则我会尝试:

$('#myId option:selected').val()

4

使用设置时JQM,请不要忘记更新UI

$('#selectId').val('newValue').selectmenu('refresh', true);

感谢您的建议-想知道为什么在使用$(“#slot-choice”)。prop(“ selectedIndex”,n)更改selectedIndex之后,为什么新值不显示在屏幕上。
Samik R

3

$("#myId").val()应该是有效的,如果myid选择元素的ID!

这将设置所选项目: $("#myId").val('VALUE');


1

假设您已使用SELECT标记创建了一个下拉列表,如下所示,

<select id="Country">

现在,如果您想使用JQuery从下拉菜单中查看选定的值是什么,只需在下面一行中输入以检索该值。

var result= $("#Country option:selected").text();

它将正常工作。


0

我知道这已经很老了,但是我只是和Razor在一起,不管我怎么努力都无法使它工作。无论我使用“文本”还是“ html”作为属性,都保持为“未定义”状态。最后,我在选项中添加了“数据值”属性,它读起来就很好。

 <option value="1" data-value="MyText">MyText</option>

 var DisplayText = $(this).find("option:selected").attr("data-value");

0

$(“ #myId option:selected”).text(); 将为您提供在下拉元素中选择的文本。无论哪种方式,您都可以将其更改为.val(); 得到它的价值。检查以下代码

<select id="myId">
    <option value="1">Mr</option>
    <option value="2">Mrs</option>
    <option value="3">Ms</option>`
    <option value="4">Dr</option>
    <option value="5">Prof</option>
</select>

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.