通常我使用$(“#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>

当前回答

你可以这样调试:

console.log($('#aioConceptName option:selected').val())

其他回答

如果有人发现最好的答案是行不通的。

试着使用:

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

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

试试这个价值…

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

或者这个用于文本…

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

你可以试试这个:

var ioConceptName = $('#ioConceptName option:selected').text(); 

我也有同样的问题,我想知道为什么它对我的案子不起作用 html页面被划分为不同的html片段,我发现我有另一个输入字段携带相同的Id的选择,这导致val()总是空的 我希望这能拯救那些有类似问题的人。

只有一种正确的方法来查找所选的选项-按选项值属性。就拿这段简单的代码来说:

//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>

如果您使用所选属性作为选项,那么find(“:selected”)将给出不正确的结果,因为所选属性将永远停留在选项中,即使用户选择了另一个选项。

即使用户选择第一个或第二个选项,$("select option:selected")的结果也会给出两个元素!因此$("select:selected").text()会给出类似First option Third option的结果

所以使用值属性选择器,不要忘记为所有选项设置值属性!