1

ユーザーがお気に入りのサイトを保存するための複数選択を使用しています。残念ながら、画像を投稿できず、アプリケーションがオンラインで動作していません。複数選択がどのように表示されるかを説明します。

LEFT BOX (値が選択されていない) RIGHT BOX (値が選択されている)

ユーザーは左から右のボックスに値を追加できます。これは正常に機能しています。しかし、保存すると、新しく選択した値しか取得できません。以前に選択された値は、フォーム プロセッサに渡されません。このようにして、値が右側の列から削除されているかどうかも判断できません。左のボックスのすべての値も投稿したいです。次に、データベースで「選択解除」できる値を知っています。

左のボックスから値を選択すると、このボックスから消えて右のボックスに表示されます。

フォームは次のようになります。

<select multiple name="main_categories_1[]" class="multiselect" id="select1">
  <option value="26">SAP</option>
  <option value="29">SEO</option>
  <option value="22">Servicemanager</option>
  <option value="28">SharePoint</option>
  <option value="34">Stages</option>
  <option value="6">Systeembeheerder</option>
  <option value="5">Tester</option>
  <option value="31">UIDesigner</option>
  <option value="35">Zend Dev</option> 
</select>

だから、明確にするために。私は新しく選択された値を取得しますが、選択されていない値と既に選択されている値は取得しません。選択されていない値も必要です。

編集

わかりました、解決しました。ejrowley が言ったように、javascript ですべての「選択された」値を選択する必要があります。このようにしました:

$(document).ready(function() {
    $('#saveAccount').submit(function() {
        $("#select2").find('option').attr('selected',true);
    });
});
4

1 に答える 1

1

解決したとしても...しかし、多様性のために、次のコードを試すことができます。

var selected = [];
var noselected = [];

$(document).on('click', '#button', function (){
    $.each($('#select2 option'), function (key, value) {

        if (!$(this).prop('selected')) {
            noselected[key] = $(this).val();
            //alert($(this).val());
        } else {
            selected[key] = $(this).val();
            //alert($(this).val());
        }
    });
});

これにより、2 つの配列が得られます。1 つは選択された値で、もう 1 つは選択されていない値です。

これがJsFiddle Demoです。

于 2013-06-03T15:17:48.470 に答える