Html: для выбора нескольких значений отправляется только одно значение, но .val () возвращает массив из двух значений - PullRequest
8 голосов
/ 23 августа 2011

При рендеринге страницы val() множественного выбора устанавливается с одним значением. Например, $("#my_select_box").val(1); Затем пользователь выбирает дополнительное значение в поле множественного выбора.

Когда форма отправляется, отправляется только новое выбранное значение, а не ранее установленное. Принимая во внимание, что при отладке в Firefox функция .val() возвращает массив из двух значений (как предыдущего, так и вновь выбранного). Почему это происходит?

Ответы [ 3 ]

23 голосов
/ 21 января 2013

Если вы программируете на PHP, проблема в этом.При использовании множественных входов PHP требует, чтобы у вас была пустая пара скобок после имени входа.Например:

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

, а не просто

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

Если вы не можете или не хотите этого делать (возможно, у вас нет доступа к базовому HTML), тогдаВы также можете записать данные POST следующим образом:

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

И вы увидите такую ​​строку, которую можете использовать:

select=one&select=two&select=three&button=submit
2 голосов
/ 23 августа 2011

Ну, без кода мы не можем быть уверены.Но когда вы хотите передать несколько параметров, вам нужно дать имя имени этого ввода в скобках [].Ex."name []", чтобы сервер знал, что на самом деле существует два значения.

0 голосов
/ 23 августа 2011

Трудно сказать, что делать без кода.

Однако, если вы хотите и option, который вы отметили selected, и другой, который был выбран, вы можете получить к ним доступ следующим образом:

option[selected="selected"] для того, что вы установили

и

option:selected для того, который выбрал пользователь

Так что-то вроде этого ...

$('#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);
});

Пример: http://jsfiddle.net/jasongennaro/pZesG/1/

...