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

当前回答

对于良好的实践,您需要使用val()来获取所选选项的值,而不是text()。

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

你可以使用

   $("#aioConceptName").find(':selected').val();

Or

   $("#aioConceptName :selected").val();

其他回答

试试这个

$(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">

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

对于选定的文本

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

对于所选值

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

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

你可以使用$("#drpList").val();

在这种情况下,你最好使用jQuery的change方法来查找当前选择的值,如下所示:

$('#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

});

我更喜欢这种方法,因为您可以在给定的选择字段中为每个选定的选项执行函数。

希望有帮助!

我无意中发现了这个问题,并将埃利奥特·博纳维尔的答案简化为:

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

或一般:

$('#id :pseudoclass')

这节省了额外的jQuery调用,在一个镜头中选择所有内容,并且更加清晰(我的观点)。