私のページには、次のような選択オプション コントロールが設定されています。
<select multiple="multiple" name="name[]" id="ListId">
<optgroup label="Group 1">
<optgroup label="Group 1.1">
<option selected="selected" value="1">One</option>
<option value="2">Two</option>
<option selected="selected" value="3">Three</option>
</optgroup>
<optgroup label="Group 1.2">
<option value="1">One</option>
<option value="2">Two</option>
<option selected="selected" value="3">Three</option>
</optgroup>
</optgroup>
<optgroup label="Group 2">
<optgroup label="Group 2.1">
<option value="1">One</option>
<option selected="selected" value="2">Two</option>
<optionvalue="3">Three</option>
</optgroup>
</optgroup>
</select>
ページをロードするときにjQueryを使用して、次のコードで選択したアイテムを取得しようとします:
if($('#ListId').length > 0)
{
var selected = [];
$('#ListId option[selected="selected"]').each(
function(i)
{
var val = $(this).val();
var txt = $(this).text();
selected[val] = txt;
}
);
}
次に、ユーザーが次のように新しい選択を行った場合に、選択したアイテムを取得するために上記のコードを変更します。
if($('#ListId').length > 0)
{
var selected = [];
$('#ListId option[selected="selected"]').each(
function(i)
{
var val = $(this).val();
var txt = $(this).text();
selected[val] = txt;
}
);
$('#ListId').change(
function()
{
selected = [];
$('#ListId option[selected="selected"]').each(
function(i)
{
var val = $(this).val();
var txt = $(this).text();
selected[val] = txt;
}
);
}
);
}
ただし、問題は、プレビューの「選択された」アイテムを読み続けることです。
ライブ テストについては、こちらのフィドルにアクセスすることもできます: http://jsfiddle.net/Qem7n/
その問題を解決する方法について何か考えはありますか?