Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка формы перед отправкой (https://javascript.ru/forum/misc/46796-obrabotka-formy-pered-otpravkojj.html)

KlausKater 24.04.2014 14:58

В массив должны собиратся value из радиокнопок, но по группам ))
Я для общего развития, как править данные между формой и POST?

BETEPAH 24.04.2014 15:19

<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>

danik.js 24.04.2014 15:42

KlausKater, что на сервере? PHP? Тогда весь твой двухуровневый массив должен быть в $_POST['test']

KlausKater 24.04.2014 15:52

на сервере питон, но это сейчас не проблема.
Товарищ Ветеран извращенец!
Во первых, количество групп заранее неизвестно!
Во вторых это конечно хорошо, что весь массив вывелся в консоль, но мне то он на сервере нужен ))
Пока решил методом:

$.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ов.
Решение не очень,но работает. хотел передать массив на сервер, и сумму считать на нем.

BETEPAH 24.04.2014 15:57

Цитата:

Сообщение от KlausKater
Товарищ Ветеран извращенец!

это говорит товарищ, который не понимает, для чего существуют радиокнопки :)
Цитата:

Сообщение от KlausKater
весь массив вывелся в консоль, но мне то он на сервере нужен

консоль я добавил для наглядности. Уберите console.log и поставьте return.true и будет на сервере.
Цитата:

Сообщение от KlausKater
тут собирается сумма value выбраных (чекнутых) inputов

Цитата:

Сообщение от KlausKater
В массив должны собиратся value из радиокнопок, но по группам

Вам не кажется, что эти два предложения противоречат друг другу? Чекнутый радиобатон может быть только ОДИН в ГРУППЕ.
Всего хорошего

KlausKater 24.04.2014 17:07

Да, требования противоречат. Извиняюсь, вариант который я сделал, не соответствует моему же представлению о том, как оно должно работать.

По поводу вывода в POST, я бы никогда не подумал что все таки просто ) Спасибо. Это я и хотел.

Насчет извращенца, настаиваю )) Перебирать вручную группы инпутов, извращение и индусятина ))

Я пытался сделать все правильно, чтобы можно было на сервере в цикле, перебрать массив групп, а внутри перебрать чекнутые инпуты (в случае с чекбоксами их может быть несколько) По идее, в value инпутов должны быть ид объектов, а то что там сейчас должно дергаться из базы, по ид. Но текущая задача не требует таких заморочек, если задача усложнится, придется делать правильно ))

danik.js 24.04.2014 18:11

KlausKater, походу у питона такой php-шной фишки нету к сожалению.. Можешь в браузере сериализовать и засылать в JSON-формате и использовать request.json на сервере, правда тогда фиг все это будет работать с отключенным JS. Хотя ты вроде смирился с этим (или не подумал).


Часовой пояс GMT +3, время: 08:25.