jQuery从下拉菜单中select选项

通常我使用$("#id").val()返回所选选项的值,但是这次不起作用。 所选标签具有id aioConceptName

html代码

 <label>Name</label> <input type="text" name="name" /> <select id="aioConceptName"> <option>choose io</option> <option>roma</option> <option>totti</option> </select> 

对于下拉选项,你可能需要这样的东西:

 var conceptName = $('#aioConceptName').find(":selected").text(); 

val()没有做到这一点的原因是因为点击一个选项不会改变下拉列表的值 – 它只是将:selected属性添加到下拉列表中的选项。

设置每个选项的值

 <select id="aioConceptName"> <option value="0">choose io</option> <option value="1">roma</option> <option value="2">totti</option> </select> 

$('#aioConceptName').val()不起作用,因为.val()返回value属性。 要使它正常工作,必须在每个<option>上设置value属性。

现在你可以调用$('#aioConceptName').val()而不是所有这些:selected被其他人build议:selected巫术。

我偶然发现了这个问题,并开发了一个更简洁的Elliot BOnneville的答案:

 var conceptName = $('#aioConceptName :selected').text(); 

或一般:

 $('#id :pseudoclass') 

这为您节省了一个额外的jQuery调用,一次性select一切,并更清晰(我的意见)。

试试这个值…

 $("select#id_of_select_element option").filter(":selected").val(); 

或这个文字…

 $("select#id_of_select_element option").filter(":selected").text(); 

如果您处于事件上下文中,在jQuery中,您可以使用以下方法检索选定的选项元素:
$(this).find('option:selected')像这样:

 $('dropdown_selector').change(function() { //Use $option (with the "$") to see that the variable is a jQuery object var $option = $(this).find('option:selected'); //Added with the EDIT var value = $option.val();//to get content of "value" attrib var text = $option.text();//to get <option>Text</option> content }); 

编辑

正如PossessWithin所提到的,我的回答只是回答这个问题:如何select所选的“选项”。

接下来,要获得选项值,请使用option.val()

你有没有考虑使用普通的旧JavaScript?

 var box = document.getElementById('aioConceptName'); conceptName = box.options[box.selectedIndex].text; 

另请参阅使用JavaScript获取选项文本/值

 $('#aioConceptName option:selected').val(); 
 <select id="form-s" multiple="multiple"> <option selected>city1</option> <option selected value="c2">city2</option> <option value="c3">city3</option> </select> <select id="aioConceptName"> <option value="s1" selected >choose io</option> <option value="s2">roma </option> <option value="s3">totti</option> </select> <select id="test"> <option value="s4">paloma</option> <option value="s5" selected >foo</option> <option value="s6">bar</option> </select> <script> $('select').change(function() { var a=$(':selected').text(); // "city1city2choose iofoo" var b=$(':selected').val(); // "city1" - selects just first query ! //but.. var c=$(':selected').map(function(){ // ["city1","city2","choose io","foo"] return $(this).text(); }); var d=$(':selected').map(function(){ // ["city1","c2","s1","s5"] return $(this).val(); }); console.log(a,b,c,d); }); </script> 

使用jQuery,只需添加一个change事件,并在该处理程序中获取选定的值或文本。

如果您需要select的文字,请使用以下代码:

 $("#aioConceptName").change(function () { alert($("#aioConceptName :selected").text()) }); 

或者,如果您需要select的值,请使用以下代码:

 $("#aioConceptName").change(function () { alert($("#aioConceptName :selected").attr('value')) }); 

也使用jQuery.val()函数来select元素:

.val()方法主要用于获取表单元素的值,如input,select和textarea。 在select元素的情况下,当没有选项被select时它将返回null ,并且当至less有一个选项时包含每个select的选项的值的数组,并且由于存在multiple属性,可以select更多的选项。

 $(function() { $("#aioConceptName").on("change", function() { $("#debug").text($("#aioConceptName").val()); }).trigger("change"); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <select id="aioConceptName"> <option>choose io</option> <option>roma</option> <option>totti</option> </select> <div id="debug"></div> 

读取select的值(不是文本):

 var status = $("#Status").val(); var status = $("#Status")[0].value; var status = $('#Status option:selected').val(); 

如何禁用select? 在两种变体中,可以使用以下值更改值:

一个

用户无法与下拉菜单进行互动。 而且他不知道还有什么其他的select。

 $('#Status').prop('disabled', true); 

用户可以在下拉菜单中看到选项,但是所有选项都是禁用的:

 $('#Status option').attr('disabled', true); 

在这种情况下, $("#Status").val() 只适用于小于1.9.0 jQuery版本。 所有其他变种将工作。

如何更新禁用的select?

从后面的代码中,仍然可以更新您select的值。 仅针对用户禁用:

 $("#Status").val(2); 

在某些情况下,您可能需要触发事件:

 $("#Status").val(2).change(); 

对于任何发现最佳答案的人不起作用。

尝试使用:

  $( "#aioConceptName option:selected" ).attr("value"); 

在最近的项目中为我工作,所以它是值得的。

只是这应该工作:

 var conceptName = $('#aioConceptName').val(); 

如果你想抓取“价值”属性而不是文本节点,这将适用于你:

 var conceptName = $('#aioConceptName').find(":selected").attr('value'); 

我希望这也有助于更好地理解,并帮助下面尝试, $('select[id="aioConceptName[]"] option:selected').each(function(key,value){ options2[$(this).val()] = $(this).text(); console.log(JSON.stringify(options2)); });
要了解更多详情,请访问http://www.drtuts.com/get-value-multi-select-dropdown-without-value-attribute-using-jquery/