Обработка формы перед отправкой
Здравствуйте, есть не очень умный вопрос )
Есть форма, как обработать ее данные перед отправкой? Добавить что то свое, отредактировать то что ввел пользователь, и отправить исправленный вариант по стандартному 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, время: 11:16. |