Обработка формы перед отправкой
Здравствуйте, есть не очень умный вопрос )
Есть форма, как обработать ее данные перед отправкой? Добавить что то свое, отредактировать то что ввел пользователь, и отправить исправленный вариант по стандартному action. Есть функция submit, которая вызывается перед отправкой, но как там править данные формы, я не понимаю. В моем случае, нужно пробежать по определенным полям формы, и сделать из них массив (нет стандартный вариант не подходит) |
Цитата:
|
Потому что стандартный вариант не позволяет задавать многомерный массив.
И при указании в инпуте name['index][] получается не массим name, а несколько ключей name[index], короче бред ). А нужен массив, именно с индексами. Короч, надо обработать данные введеные пользователем, перед отправкой. |
Какой-то странный стандартный вариант, не находите?
Цитата:
$("#my-form").submit(function(){ //обрабатываете return true; }); |
Цитата:
name[a] name[b] - так будет ассоциативный name[] name[] - так будет обычный Видимо ты не вкурил как это работает и полез не в те дебри. |
Видимо не вкурил,
когда я задаю несколько инпутов <input type='radio' name='test[1][] val=1> <input type='radio' name='test[1][] val=2> <input type='radio' name='test[1][] val=3> <input type='radio' name='test[1][] val=4> <input type='radio' name='test[2][] val=1> <input type='radio' name='test[2][] val=2> <input type='radio' name='test[2][] val=3> <input type='radio' name='test[2][] val=4> <input type='radio' name='test[3][] val=1> <input type='radio' name='test[3][] val=2> <input type='radio' name='test[3][] val=3> <input type='radio' name='test[3][] val=4> получается не массив test{1: 2, 2:2, 3:1}, а несколько элементов 'test[1]':[2], 'test[2]':[2], 'test[3]':[1]. Что не собриается парсером на сервере в один массив. |
Грубо говоря, есть группы инпутов, с чекбоксами, и я хочу массив:
{группа1: [1,2], группа2:[1], группа3:[1,2,3]} |
Товарищь BETEPAH,
Каким образом в POST добавить данные? В той самой функции submit. |
KlausKater,
А что должно собираться в массив? Это же радиокнопка, у нее одно значение для каждой из трех групп. |
Цитата:
|
В массив должны собиратся value из радиокнопок, но по группам ))
Я для общего развития, как править данные между формой и POST? |
<form id="my-form"> <input type='radio' name='test1' value=1> <input type='radio' name='test1' value=2> <input type='radio' name='test1' value=3> <input type='radio' name='test1' value=4> <input type='radio' name='test2' value=5> <input type='radio' name='test2' value=6> <input type='radio' name='test2' value=7> <input type='radio' name='test2' value=8> <input type='radio' name='test3' value=9> <input type='radio' name='test3' value=10> <input type='radio' name='test3' value=11> <input type='radio' name='test3' value=12> <input type="hidden" name="group1" id="group1"> <input type="hidden" name="group2" id="group2"> <input type="hidden" name="group3" id="group3"> <input type="submit" value="go"> </form> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script> <script> $(function() { $('#my-form').submit(function(){ var group1 = [], group2 = [], group3 = []; $('input[name=test1]').each(function() { group1.push(this.value) }); $('input[name=test2]').each(function() { group2.push(this.value) }); $('input[name=test3]').each(function() { group3.push(this.value) }); $('#group1').val(group1); $('#group2').val(group2); $('#group3').val(group3); console.log($('#my-form').serialize()); return false; }); }); </script> |
KlausKater, что на сервере? PHP? Тогда весь твой двухуровневый массив должен быть в $_POST['test']
|
на сервере питон, но это сейчас не проблема.
Товарищ Ветеран извращенец! Во первых, количество групп заранее неизвестно! Во вторых это конечно хорошо, что весь массив вывелся в консоль, но мне то он на сервере нужен )) Пока решил методом: $.each($('form input:checked'), function(i, n){ summ = summ + parseInt(n.value); }); var input = $("<input>").attr("type", "hidden").attr("name", 'summ').val(summ); $(this).append($(input)); тут собирается сумма value выбраных (чекнутых) inputов. Решение не очень,но работает. хотел передать массив на сервер, и сумму считать на нем. |
Цитата:
Цитата:
Цитата:
Цитата:
Всего хорошего |
Да, требования противоречат. Извиняюсь, вариант который я сделал, не соответствует моему же представлению о том, как оно должно работать.
По поводу вывода в POST, я бы никогда не подумал что все таки просто ) Спасибо. Это я и хотел. Насчет извращенца, настаиваю )) Перебирать вручную группы инпутов, извращение и индусятина )) Я пытался сделать все правильно, чтобы можно было на сервере в цикле, перебрать массив групп, а внутри перебрать чекнутые инпуты (в случае с чекбоксами их может быть несколько) По идее, в value инпутов должны быть ид объектов, а то что там сейчас должно дергаться из базы, по ид. Но текущая задача не требует таких заморочек, если задача усложнится, придется делать правильно )) |
KlausKater, походу у питона такой php-шной фишки нету к сожалению.. Можешь в браузере сериализовать и засылать в JSON-формате и использовать request.json на сервере, правда тогда фиг все это будет работать с отключенным JS. Хотя ты вроде смирился с этим (или не подумал).
|
Часовой пояс GMT +3, время: 08:47. |