Как сделать multiselect
Есть html select
<select name="opValueDet2" multiple="true" size="5"> <option value="109168733" code="60811463">Active</option> <option value="109168734" code="60811466">Terminated</option> <option value="109168736" code="109151180">Maternity Leave</option> <option value="109168737" code="109151182">Educational Leave</option> <option value="109168738" code="109167709">Leave</option> </select> Уже второй день мучаюсь над одной проблемой. При нажатии на кнопку Submit должны селектиться все, кроме Terminated, а если один из option-ов активный - то вывести только его. То есть если все option-ы не будут активными, то надо вывести всех, кроме Terminated. Помогите) |
Во-первых, даже если вы выберете несколько опций в списке, то сервер все равно получит значение только последнего из выбранных, так как для списка со множественным выбором имя должно массивом - name="opValueDet2[]".
|
jQuery(function($) { $('select[name=opValueDet2]') .closest('form') .submit(function(e) { var options = $('select[name=opValueDet2] option', this); if( !options.is(':selected') ) { options .filter(':not(:contains("Terminated"))') .prop('selected', true); } // Отменить отправку формы return false; }); }); |
Цитата:
|
dd_smol, не будет такое работать.
|
Цитата:
|
Да вы что!? Ага, а что на сервере будет при этом?
|
Цитата:
|
НУ конечно, то есть JS как спортивный интерес, выплюнул, а что там будет в итоге, трава не расти? :)
Ведь в случае правильного именования и селектор совсем по иному надо прописывать или тоже бог с ним? |
Цитата:
|
Задача выделить все, кроме Terminated и вывести их, в случае если ничего не выделено, во вьюшке) А при нормальном селекте он должен работать как обычно) В вашем случае он только выделяет и все, а мне нужно, чтобы был виден результат)
|
Да что такое, ну даже намека нет на асинхронный запрос, а чтобы еще JS заниматься "сборкой", затем воткнуть эту "сборку" в форму, после чего ее отправить..., это как называется? Зачем подменять то, что выполняется естественно?
Всего лишь надо имя указать как массив - name[], а в селекторе экранировать эти скобки. Зачем же все усложнять? |
Цитата:
|
Цитата:
|
neos, давайте так - коли вы источник этой "свары", выполните следующее:
Отправьте свою форму со списком, так как она есть, то есть с именем вами прописанным, выбрав в списке несколько опций, и в зависимости от метода ее передачи выполните на сервере или print_r($_GET), или print_r($_POST). Что вы получите при этом? Почему так получается? Пока не разберетесь с этим, думать как бы что-то сотворить на клиенте со списком рано, ибо у вас изначально в форме заложен баг. |
Часовой пояс GMT +3, время: 22:05. |