2012-01-25 11 views
6

Mam dwie listy MultiSelect (AllProductList i SelectedProductList), AllProductList zawiera wszystkie produkty dla określonej kategorii i dodaję/klonuję opcje z AllProductList do SelectedProductList przy użyciu JQuery.Czy istnieje sposób publikowania wszystkich wartości na liście wielokrotnego wyboru, a nie tylko wybranych?

Oczywiście chcę tylko opublikować wartości w SelectedProductList i niezależnie od tego, czy są wybrane, czy nie.

Zawijam znaczniki formularzy tylko wokół SelectedProductList i teraz potrzebuję jakiś sposób, aby opublikować wszystkich wartości opcji w nim, niezależnie od tego, czy wybrano, czy nie.

+4

wybrać je wszystkie programowo przed złożeniem. – Leonid

+0

Tak, to brzmi dużo bardziej wiarygodnie i bezproblemowo. – LaserBeak

Odpowiedz

2

można napisać javascript, który wypełnia ukryty element formularza ze wszystkimi wartościami z select, coś jak poniżej, a na serverze po prostu użyj explode (",", $ _ POST ["allValues"]), aby uzyskać wszystkie Opcje

<script> 
var hiddenValues = ""; 
$(document).ready(function(){ 
    $("#mySelect option").each(function(){ 
     hiddenValues = $(this).val() + ","; 
    })//end each 

    $("#myForm").append("<input type='hidden' name='allValues' value='"+hiddenValues+"'>") 
}) 
</script> 

oczywiście, powyższy ma zależność od jQuery i twoja postać ma identyfikator myForm i że multiselect ma identyfikator mySelect :)

EDIT:
UWAGA1: że tylko w ten sposób zaoszczędzić wartości opcji, a nie etykiety z selekcji (do ich zapisania można zastosować podobną metodę także). właśnie o tym pamiętać

UWAGA2: uważaj, jeśli wartości zawierają żadnych przecinków, spowoduje to utratę wprowadzonych danych (jeśli nie uniknął w ten sposób, czy nie za pomocą jakiegoś innego separatora)

+0

Zmieniłem opcje # mySelect na #mySelect i zadziałało to dla mnie. dzięki :) – Parag

+0

masz rację, to powinno być "opcja", dodam ją do mojej odpowiedzi – Bogdan

1

nie mogę komentować , więc myślę, że muszę postawić odpowiedź?

potrzeby odpowiedź Bogdana + =

hiddenValues += $(this).val() + ","; 

inaczej można dostać tylko 1 ...

Powiązane problemy