通常我使用 $("#id").val()
来返回所选选项的值,但这次它不起作用。所选标签的 ID 为 aioConceptName
html代码
<label for="name">Name</label>
<input type="text" name="name" id="name" />
<label for="aioConceptName">AIO Concept Name</label>
<select id="aioConceptName">
<option>choose io</option>
<option>roma</option>
<option>totti</option>
</select>
#aioConceptName
的标记吗
<option>
上设置 value
属性,否则将无法工作,对吧?
$("#aioConceptName").val()
返回 choose io
。
对于下拉选项,您可能需要这样的内容:
var conceptName = $('#aioConceptName').find(":selected").text();
val()
没有起作用的原因是因为单击选项不会更改下拉列表的值 - 它只是将 :selected
属性添加到作为 子项的选定选项的下拉菜单。
设置每个选项的值
<label for="aioConceptName">AIO Concept Name</label>
<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
voodoo。
$('#aioConceptName').val()
将返回 null/"undefined"
prompt
选项 <option>Please select an option</option>
。就我而言,添加空白值属性 <option value="">Please...</option>
不是问题,但我相信在某些情况下没有值属性是有意义的。但是 +1 因为你的伏都教措辞让我微笑。
val()
不是选择value
而不是option
内的文字吗?即它选择1
而不是roma
。
.val()
的重点。如果您希望操作/使用文本,请使用 $(":selected).text()
或将值和文本设置为相同。
我偶然发现了这个问题,并开发了 Elliot BOnneville 答案的更简洁版本:
var conceptName = $('#aioConceptName :selected').text();
或一般来说:
$('#id :pseudoclass')
这为您节省了额外的 jQuery 调用,一次选择所有内容,并且更清晰(我的观点)。
querySelectorAll()
方法提供的性能提升(请参阅 jQuery docs)。因此,它应该比 Eliot's solution 慢。
.find(':selected')
,因为它允许您从附加到事件的回调中调用它......比如 $('#aioConceptname').bind('change', function(el) { console.log ( $(el).find(':selected').text() ); });
试试这个价值...
$("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所述,我的回答只是回答问题:如何选择选定的“选项”。
接下来,要获取选项值,请使用 option.val()
。
$(this).find('option:selected').val()
以获取选项元素的值,或添加 $(this).find('option:selected').text()
以获取文本。 :)
您是否考虑过使用普通的旧 javascript?
var box = document.getElementById('aioConceptName');
conceptName = box.options[box.selectedIndex].text;
另请参阅Getting an option text/value with JavaScript
$('#aioConceptName option:selected').val();
读取选择的值(不是文本):
var status = $("#Status").val();
var status = $("#Status")[0].value;
var status = $('#Status option:selected').val();
如何禁用选择?在这两种变体中,可以使用以下方法更改值:
一个
用户无法与下拉列表交互。而且他不知道可能存在哪些其他选择。
$('#Status').prop('disabled', true);
乙
用户可以在下拉列表中看到选项,但所有选项都被禁用:
$('#Status option').attr('disabled', true);
在这种情况下,$("#Status").val()
仅适用于 jQuery 版本小于 1.9.0
。所有其他变体都可以使用。
如何更新禁用的选择?
从后面的代码中,您仍然可以更新选择中的值。它仅对用户禁用:
$("#Status").val(2);
在某些情况下,您可能需要触发事件:
$("#Status").val(2).change();
为了获得良好的实践,您需要使用 val()
来获取所选选项的值,而不是 text()
。
<label>Name</label>
<input type="text" name="name" />
<select id="aioConceptName">
<option value="choose">choose io</option>
</select>
您可以使用
$("#aioConceptName").find(':selected').val();
或者
$("#aioConceptName :selected").val();
你应该使用这个语法:
var value = $('#Id :selected').val();
所以试试这个代码:
var values = $('#aioConceptName :selected').val();
您可以在 Fiddle 中进行测试:http://jsfiddle.net/PJT6r/9/
在 this post 中查看此答案
使用 JQuery:
如果要获取选中的选项文本,可以使用$(select element).text()。 var text = $('#aioConceptName option:selected').text();如果要获取选定的选项值,可以使用 $(select element).val()。 var val = $('#aioConceptName option:selected').val();确保在
使用此 HTML 代码示例,假设选择了最后一个选项:
var text 会给你 totti(text) var val 会给你 totti(value)
$(document).on('change','#aioConceptName' ,function(){ var val = $('#aioConceptName option:selected').val(); var text = $('#aioConceptName option:selected' ).text(); $('.result').text("选择值 = " + val); $('.result').append("
选择文本 = " + text); }) <脚本 src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">
要使用 jQuery 找到正确的选择,请考虑在 html 树中可以使用多个选择并混淆您的预期输出。
(:selected).val()
或 (:selected).text()
将不在多个选择选项上正常工作。因此,我们首先像 .map()
一样保留所有选择的数组,然后返回所需的参数或文本。
以下示例说明了这些问题并提供了更好的方法
<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>
查看变体 a、b 中不同的容易出错的输出,与正确工作的 c 和 d 相比,将所有选择保留在一个数组中,然后返回您要查找的内容。
只是这应该工作:
var conceptName = $('#aioConceptName').val();
$(function() { $('#aioConceptName').on('change', function(event) { console.log(event.type + " event with:", $(this).val()); $ (this).prev('input').val($(this).val()); }); });
使用 jQuery,只需添加一个 change
事件并在该处理程序中获取选定的值或文本。
如果您需要选定的文本,请使用此代码:
$("#aioConceptName").change(function () {
alert($("#aioConceptName :selected").text())
});
或者,如果您需要选择值,请使用以下代码:
$("#aioConceptName").change(function () {
alert($("#aioConceptName :selected").attr('value'))
});
对于任何发现最佳答案的人都不起作用。
尝试使用:
$( "#aioConceptName option:selected" ).attr("value");
在最近的项目中为我工作,所以值得一看。
也对选择元素使用 jQuery.val()
函数:
.val() 方法主要用于获取输入、选择和文本区域等表单元素的值。在 select 元素的情况下,当没有选择任何选项时它返回 null,当至少有一个选项时,它返回一个包含每个选定选项的值的数组,并且可以选择更多,因为存在 multiple 属性。
$(function() { $("#aioConceptName").on("change", function() { $("#debug").text($("#aioConceptName").val()); })。触发器(“改变”);});
直截了当而且很简单:
您的下拉菜单
<select id="aioConceptName">
<option>choose io</option>
<option>roma</option>
<option>totti</option>
</select>
jquery代码获取选定的值
$('#aioConceptName').change(function() {
var $option = $(this).find('option:selected');
//Added with the EDIT
var value = $option.val(); //returns the value of the selected option.
var text = $option.text(); //returns the text of the selected option.
});
要获取所选标签的值:
$('#id_Of_Parent_Selected_Tag').find(":selected").val();
如果您想获取文本,请使用以下代码:
$('#id_Of_Parent_Selected_Tag').find(":selected").text();
例如:
<div id="i_am_parent_of_select_tag">
<select>
<option value="1">CR7</option>
<option value="2">MESSI</option>
</select>
</div>
<script>
$('#i_am_parent_of_select_tag').find(":selected").val();//OUTPUT:1 OR 2
$('#i_am_parent_of_select_tag').find(":selected").text();//OUTPUT:CR7 OR MESSI
</script>
您可以尝试以这种方式调试它:
console.log($('#aioConceptName option:selected').val())
我希望这也有助于更好地理解并帮助在下面尝试这个,
$('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/
如果你想获取 'value' 属性而不是文本节点,这对你有用:
var conceptName = $('#aioConceptName').find(":selected").attr('value');
这是此问题的简单解决方案。
$("select#aioConceptName").change(function () {
var selectedaioConceptName = $('#aioConceptName').find(":selected").val();;
console.log(selectedaioConceptName);
});
var selectedaioConceptName = $('#aioConceptName option:selected').val();
比使用另一个 find() 更好
试试这个
$(document).ready(function() {
$("#name option").filter(function() {
return $(this).val() == $("#firstname").val();
}).attr('selected', true);
$("#name").live("change", function() {
$("#firstname").val($(this).find("option:selected").attr("value"));
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<select id="name" name="name">
<option value="">Please select...</option>
<option value="Elvis">Elvis</option>
<option value="Frank">Frank</option>
<option value="Jim">Jim</option>
</select>
<input type="text" id="firstname" name="firstname" value="Elvis" readonly="readonly">
$('nameofDropDownList').prop('selectedIndex', whateverNumberasInt);
将 DDL 想象成一个带有索引的数组,您正在选择一个索引。选择你想用你的 JS 设置的那个。
您可以使用 $("#drpList").val();
要获取具有相同类 = 名称的选择,您可以这样做,以检查是否选择了选择选项。
var bOK = true;
$('.optKategorien').each(function(index,el){
if($(el).find(":selected").text() == "") {
bOK = false;
}
});
我遇到了同样的问题,但我弄清楚了为什么它不适用于我的案例
html 页面被分成不同的 html 片段,我发现我有另一个带有 select
的相同 ID 的输入字段,其中导致 val()
始终为空
我希望这可以为遇到类似问题的任何人节省一天的时间。
尝试
aioConceptName.selectedOptions[0].value
let val = aioConceptName.selectedOptions[0].value console.log('选定值:',val);
只有一种正确的方法可以找到选定的选项 - 通过 option
value
属性。所以采取简单的代码:
//find selected option
$select = $("#mySelect");
$selectedOption = $select.find( "option[value=" + $select.val() + "]" );
//get selected option text
console.log( $selectedOption.text() );
因此,如果您有这样的列表:
<select id="#mySelect" >
<option value="value1" >First option</option>
<option value="value2" >Second option</option>
<option value="value3" selected >Third option</option>
</select>
如果您对 option
使用 selected
属性,那么 find(":selected")
将给出不正确的结果,因为 selected
属性将永远停留在 option
,即使用户选择了另一个选项。
即使用户选择第一个或第二个选项,$("select option:selected") 的结果也会给出两个元素!所以 $("select :selected").text() 会给出类似“第一个选项第三个选项”的结果
所以使用 value
属性选择器,不要忘记为所有选项设置 value
属性!
在这种情况下,您最好的选择可能是使用 jQuery's change method 来查找当前选择的值,如下所示:
$('#aioConceptName').change(function(){
//get the selected val using jQuery's 'this' method and assign to a var
var selectedVal = $(this).val();
//perform the rest of your operations using aforementioned var
});
我更喜欢这种方法,因为您可以在给定的选择字段中为每个选定的选项执行功能。
希望有帮助!
.val()
应该适用于您的情况 - 您必须在其他地方有错误。val()
为什么不使用var conceptVal = $("#aioConceptName option").filter(":selected").val();
?var conceptVal = $("#aioConceptName option:selected").val()
怎么样?var mySelect = $('#mySelect');
/* ...更多代码发生... */ {2 }