我想获取多选列表的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);
}
});
}
感谢。
答案 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:
简而言之:
$('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(", "));