如何使用javaScript获取多个SELECTION的id值?

时间:2010-08-31 18:39:35

标签: javascript jquery html

我想获取多选列表的ID值。多选列表 是动态生成。如何获得这些价值观?如果我能够获得价值观, 我可以将其转换为JSON 对象,或者它将作为JSON对象获取!!!!

这是我动态生成它的代码。

function displayMultipleList() {
    EmployeeManagement.getResponseList(function (respList) {
        var respOptionsSelect = document.getElementById('respOptions');
        var searchOptions = null;
        for (var i = 0; i < respList.length; i++) {
            var resp = respList[i];
            selectOptions = document.createElement('option');
            selectOptions.value = resp.respID;
            selectOptions.innerHTML = resp.respName;
            respOptionsSelect.appendChild(selectOptions);
        }


    });
}

感谢。

4 个答案:

答案 0 :(得分:2)

您可以使用serializeArray() function

$("#respOptions").serializeArray()

它将返回JavaScript数组中的选定对象,可以轻松地将其字符串化为JSON字符串。

如果您的<select>元素看起来像这样(不要忘记name属性,因为serializeArray需要它!):

<select name="respOptions" id="respOptions" multiple="true">
 <option value="1">one</option>
 <option value="2">two</option>
 <option value="3">three</option>
</select>

如果选择了第2项和第3项,则可以从函数中获取该项:

[{ name: "respOptions", value: "2"}, {name: "respOptions", value: "3"}]

编辑 - 我忘了将name属性添加到<select>元素。对不起,感到困惑。

答案 1 :(得分:1)

以下是如何迭代select元素中的选项列表并获取id:

http://jsfiddle.net/bXUhv/

简而言之:

$('option', $('#optionlist')).each(function() {
    alert($(this).attr('id'));
});​

关于将任何数据转换为JSON对象,请查看this jQuery library

答案 2 :(得分:1)

将问题的模糊性视为挑战,这里有两个选择。

您正在询问“如何获取值”并“将其转换为JSON对象”。从字面意义上讲,忽略了对id的提及,你可以简单地这样做:

var x = JSON.stringify( $('#respOptions').val() );

...它将为您提供所选值的简单(JSON)数组:

["somevalue","anothervalue"]

但是,如果通过“获取ID值”表示“获取所选选项的ID和值”,那么您可以执行以下操作:

var y = $('#respOptions option:selected').map( function(i,el){
    var result = {};
    result[ el.id ] = $(el).val();
    return result;
}).get();
y = JSON.stringify(y);

...这会给你一个像这样的数组:

[{"id1":"somevalue"},{"id5":"anothervalue"}]

我将一个fiddle汇总在一起,对您的HTML做出假设,并在动态添加选项的respList中进行模拟。它以两种方式解决了这个问题。

如果您的浏览器不支持JSON.stringify,您可以使用Crockford经常推荐的json2.js库。

答案 3 :(得分:1)

多选和如果您想要数组格式的id 小提琴Example here

var countries = [];
$.each($(".country option:selected"), function() {
  countries.push($(this).attr("id"));
});
alert(countries.join(", "));