Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Проблема с отправкой input`ов


Автор: Vitkaz 9.5.2011, 11:56
Всем привет! В общем такая ситуация. Есть два select`а,  выбираем в первом нужные поля и кликая по стрелке переносим их во второй, далее при отправке формы отправляются записи из 2-го select`а. Но чтобы получить поля из select`а их нужно выделить, чтобы не выделять я добавляю скрытые input, с соответствующими записями и отправляю input`ы. Проблемы начинаются когда я удаляю запись из 2-го select`а (при этом соответствующий ей input тоже удаляется). И при очередной отправке этот input присутствует в отправляемых данных. Хотя если смотреть через firebug в мозиле, то его там нет, он действительно удаляется. 

так собираю input`ы
Код

qTypes =null;
qTypes = $("#searchtypes input[name='typefield']").serializeArray();


После удаления, при очередной отправке, вывожу здесь alert(qTypes.length), но кол-во записей не изменяется. как-будто  набор input`ов прежний.


отправляю через post
Код

$.post("url", {types: qTypes},function(data) {.....} , "json");


Страница не редиректится т.е. отправляю данные, изменяю набор полей и снова отправляю.  

Как можно решить эту проблему?

Автор: нуп 9.5.2011, 12:21
Значит не удаляет

Автор: Vitkaz 9.5.2011, 12:32
Цитата(нуп @ 9.5.2011,  12:21)
Значит не удаляет

Ну как же так. Визуально его ведь там нет. Странно.

Автор: нуп 9.5.2011, 12:33
А попробуйте удалять все инпуты и пересоздавать их.

Автор: Vitkaz 9.5.2011, 13:11
Решил создавать input`ы при отправке формы, а после записи их в массив удалять.
Код

selectOutput = document.getElementById('typefield');
                    for(var j=0; j < selectOutput.options.length; j++) {
                                var input = document.createElement('input');
                                input.type  = 'hidden';
                                input.name  = 'typefield';
                                input.value = selectOutput.options[j].value;
                                selectOutput.parentNode.insertBefore(input, selectOutput);
                            
                    }
                    
                    qTypes = $("#searchtypes input[name='typefield']").serializeArray();

                    $("#searchtypes input[name='typefield']").remove();


Можно конечно перед отправкой выделить все option`ы select`а, но пользователь не должен видеть выделения после клика.

Пока решил оставить так. 

Нуп, спасибо за наводку  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)