使用$(' #id')。val()不会返回下拉列表的选定值

时间:2016-01-20 12:00:11

标签: javascript jquery

我试图找到下拉列表的选定值,但我不断收到空字符串或未定义的结果。

我的HTML看起来像这样:

<div class="input-group" style="padding-bottom: 10px;">
    <span id="add-addon-styling" class="input-group-addon">Status</span>
    <!-- TODO: Make this automatically rather than hardcoded -->
    <select class="form-control required" id="new-activity-modal-status-dropdown">
        <option value="NA" class="selected">N/A</option>
        <option value="ON_TRACK">On Track</option>
        <option value="ISSUE">Issue</option>
        <option value="BEHIND">Behind</option>
    </select>
    <span class="input-group-addon" data-toggle="tooltip" data-placement="top" title="The Status of the Activity. Usually On Track but otherwise set to N/A if unsure.">
        <b>?</b>
    </span>
</div>

这是JavaScript:

function OnModalCreateNewActivityBtnClick() {
    var jsonObject = '';
    var modal = $('new-activity-modal-body');
    var activityStatus = modal.find('#new-activity-modal-status-dropdown').val();
    ...
    ...
}

我也看到过这样的建议:

function OnModalCreateNewActivityBtnClick() {
    var jsonObject = '';
    var modal = $('new-activity-modal-body');
    var activityStatus = modal.find('#new-activity-modal-status-dropdown').find(":selected").text();
    ...
    ...
}

第一个返回未定义的结果。第二个返回一个空字符串。

我不确定该怎么做。 JavaScript仍然困扰着我。

4 个答案:

答案 0 :(得分:2)

var modal = $('new-activity-modal-body');

应该是

var modal = $('#new-activity-modal-body');

你没有错误,因为jquery选择器什么也没找到是有效的。

答案 1 :(得分:1)

假设HTML为:

<div class="new-activity-modal-body">...</div>

以下代码无法使用,因为您未指定new-activity-modal-bodyclass还是id

var modal = $('new-activity-modal-body');

应该是:

var modal = $('#new-activity-modal-body'); //id selector
//OR
var modal = $('.new-activity-modal-body'); //class selector

希望这有帮助。

答案 2 :(得分:1)

使用

var modal = $('#new-activity-modal-body');

答案 3 :(得分:1)

您的变量modal未正确分配。没有new-activity-modal-body。您应该使用#new-activity-modal-body

只需替换

var modal = $('new-activity-modal-body');

使用

var modal = $('#new-activity-modal-body');