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/