2010-12-01 13 views
8

複数選択リストからjsonオブジェクトにすべてのオプションの.val()および.html()を取得するにはどうすればよいですか?好ましくはjQueryを使用します。jQueryを使用して選択リストをJSONに変換する

ありがとうございます!

さらに詳しい情報:

私は2つの複数の選択ボックスを使用しています。左のボックスの項目を選択し、右に移動します。選択したアイテムがすべて選択されると、サブミットがプッシュされ、右側の選択ボックスのすべてのアイテムがメインリストに移動します。

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")); 
    } 
} 

例htmlと出力は次のようになります:

<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"] 
] 
+0

すべて選択されたオプション、またはすべてのアイテム? – Orbling

+0

なぜそれがJSONオブジェクトに必要ですか?あなたが達成しようとしていることについてもう少し詳しく知っていれば、より良い答えが得られます。 – Lazarus

+0

例として、htmlとjsonの出力を挙げてください。 –

答えて

13

ここ

は私がJSONオブジェクトを取得し、一度使用していたコードですこのようなもの?

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]); 
    } 
} 

デモ:http://jsfiddle.net/eNGUL/

EDIT:

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]); 
} 

デモ:http://jsfiddle.net/karim79/eNGUL/2/

.mapを参照してくださいあなたの例のデータのような構造を得るために。

+0

これは少し説明できますか?私はmapメソッドを使ったことがない。どのように私は上記の出力を得ることができますか?ありがとう! – RandyLahey

+0

@RandyLahey - 私は自分の答えを編集しました。もしあなたが '.map'のドキュメントページを読んで、私があなたがそれを得ると思う例を見るなら、それはかなり簡単です。 – karim79

関連する問題