Javascript按文本设置下拉列表的选定值

时间:2014-08-14 08:07:34

标签: javascript jquery datatables

我正在使用Jquery Datatables进行内联编辑。我有一个硬编码的下拉列表,它动态地为每一行创建。

<select class="form-control edit-mode" id="Status">
<option>A</option>
<option>B</option>
<option>C</option>
</select>

所以要获取我使用的当前所选项目的值

var tr = $(this).parents('tr:first');
var status = tr.find('#Status').val();

我想要设置的值是在它旁边的标签中。所以我得到了它的价值:

var stat = tr.find('#lbl_Status').html();

那么如何将下拉列表的选定值设置为stat变量?

我已经尝试使用我在Stackoverflow上找到的其他解决方案,但它们无法工作,因为我似乎无法获得整个元素或其他东西。由于.length不在status元素上。而且我不能使用普通的document.getElementById方法,因为它可以是具有相同ID的多个选择列表。

F.ex使用此解决方案:

$(document).on("click", ".edit-action", function (e) {
    var tr = $(this).parents('tr:first');
    var stat = tr.find('#lbl_Status').html();

    var status = tr.find('#Status');

for (var i = 0; i < status.options.length; i++) {
    if (status.options[i].text === stat) {
        status.selectedIndex = i;
        break;
        }
    }
});

我得到:未捕获的TypeError:无法读取未定义的属性'length'

2 个答案:

答案 0 :(得分:1)

status是jquery对象,使用:

status.find('option').length;

或转换为javascript对象并使用:

status[0].options.length

<强> Demo

答案 1 :(得分:0)

我通过使用这一行而不是整个for循环来解决这个问题。

status.find("option:contains("+ stat +")").attr('selected', true);

感谢您指出它是一个Jquery对象,它让我得到答案:)