2011-08-23 10 views
7

Podczas renderowania strony, val() z wielokrotnego wyboru jest ustawiane za pomocą pojedynczej wartości. Na przykład: $("#my_select_box").val(1); Następnie użytkownik wybiera dodatkową wartość w polu wyboru wielokrotnego.Html: Dla Wybierz wiele, tylko jedna wartość jest przesyłana, ale .val() zwraca tablicę dwóch wartości

Po przesłaniu formularza, tylko nowo wybrana wartość zostanie przesłana, a nie poprzednio ustawiona. Podczas gdy debugowanie w Firefoksie, funkcja .val() zwraca tablicę dwóch wartości (zarówno poprzednią, jak i nowo wybraną). Dlaczego to się dzieje?

Odpowiedz

2

Cóż, bez kodu nie możemy być pewni. Ale gdy chcesz przekazać wiele params musisz podać wartość nazwy tego wejścia nawiasów []. Dawny. "name []", aby serwer wiedział, że istnieją dwie wartości.

0

Trudno powiedzieć, co zrobić bez kodu.

Jednakże, jeśli chcesz zarówno option że zaznaczono selected a inny, który został wybrany, można z nich korzystać w sposób następujący:

option[selected="selected"] dla jednej ustawionej

i

option:selected dla ten wybrany przez użytkownika

Tak coś takiego ...

$('#submit').click(function(){ 
    var s = $('#my_select_box option[selected="selected"]').val(); 
    var t = $('#my_select_box option:selected').val(); 
    alert("Set: " + s + ", Chosen: " + t); 
}); 

Przykład: http://jsfiddle.net/jasongennaro/pZesG/1/

18

Jeśli programowanie w PHP, problem leży tam. Podczas korzystania z wejść wielokrotnych PHP wymaga podania pustej pary nawiasów po nazwie wejścia. Na przykład:

<select name="select[]" multiple="multiple"> 

zamiast po prostu

<select name="select" multiple="multiple"> 

Jeśli nie możesz lub nie będzie to (być może nie masz dostępu do podstawowej HTML) zrobić, to można alternatywnie przechwytywania dane POST, takie jak ten:

$data_from_post = file_get_contents("php://input"); 
var_dump($data_from_post); 

a zobaczysz ciąg tak, że można użyć:

select=one&select=two&select=three&button=submit 
Powiązane problemy