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/