How can I get the .val()'s and .html()'s of all the options from a multiple select list into a json object? Preferably using jQuery.
Thanks in advance!
A little more info:
I am using two multiple select boxes. Selecting items on the left box and moving them to the right. Once they have all the items they want selected they will push submit and it will take all the items in the right select box and move them to a main list.
Here is the code I am using once I get the JSON object:
datalistObject = JSON.parse(response);
if (datalistObject.length){
$(".data-list tbody").empty();
for (var i=0; i < datalistObject.length; i++) {
var newrow = "<tr><td><input type='checkbox' name='user_id' value='" + datalistObject[i][0] + "' class='data-list-check'></td><td>" + datalistObject[i][1] + "</td></tr>";
$(newrow).appendTo($(".data-list tbody"));
}
}
Example html and output would be:
<select name="selecteditems">
<option value="op1">Option 1</option>
<option value="op2">Option 2</option>
<option value="op3">Option 3</option>
</select>
[
["op1","Option 1"],
["op2","Option 2"],
["op3","Option 3"]
]
Something like this?
var items = $("#select > option").map(function() {
var opt = {};
opt[$(this).val()] = $(this).text();
return opt;
}).get();
for(var i = 0; i < items.length; i++) {
for(key in items[i]) {
alert(key + ': ' + items[i][key]);
}
}
Demo: http://jsfiddle.net/eNGUL/
EDIT: To get a structure like your example data:
var items = $("#select > option").map(function() {
var arr = [];
arr.push([$(this).val(), $(this).text()]);
return arr;
}).get();
for(var i = 0; i < items.length; i++) {
alert(items[i]);
}
Demo: http://jsfiddle.net/karim79/eNGUL/2/
See .map
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With