2013-06-03 81 views
0

我正在使用多重選擇讓用戶保存最喜歡的網站是什麼。 不幸的是,我無法發佈圖片和應用程序不能在線工作。我會盡力解釋如何多選擇顯示出來:PHP - 取得多選擇的取消選擇的值

LEFT 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); 
    }); 
}); 
+2

難道你沒有已經在你的服務器上的所有值? –

+0

所有的值都在數據庫中,爲什麼? – Hak

+0

爲什麼你想從客戶那裏得到它們? –

回答

0

即使你解決它......但是,只是爲了不同的目的,你可以試試這個代碼:

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與選定的值和另一個與未選中。

這裏是JsFiddle Demo