@Wsearch

Почему из динамической таблицы не приходят данные в $_POST?

Здравствуйте! Появилась задача получения данных из таблицы в массив $_POST. Часть полей необязательна, поэтому я ее скрыл и раскрываю только при нажатии кнопки. Реализовано это на JS. При отправке формы, в POST попадают только поля, которые уже есть в html, те которые добавляются по желанию не передают данные в суперглобальный массив. Как это можно решить, код приложу?
<form class="index-form" method="post">
                        <div class="form-group form-search">
                            <input class="form-control serch-value" name="search-name" type="text" placeholder="Укажите ФИО" >
                        </div>
                    </div>
                    <div class="col-lg-6">
                            <div class="form-group form-search">
                                <input class="form-control serch-value" name="search-name2" type="text" placeholder="Название фирмы" >
                            </div>
                    </div>
                <table border="1" id="v_table">

                    <tbody>
                    <tr>
                        <td><input class="form-control serch-value" type="text" name="xml0"></td>
                        <td><input class="form-control serch-value" type="text" name="values0"></td>
                        <td><input class="form-control serch-value" type="text" name="val_sort0" value="500"></td>
                    </tr>
                    <script type="text/javascript">
                        var d = document;
                        var last_id = 0;
                        function add_value_f() {

                            // находим нужную таблицу
                            var tbody = d.getElementById('v_table').getElementsByTagName('tbody')[0];

                            // создаем строку таблицы и добавляем ее
                            var row = d.createElement("tr");
                            tbody.appendChild(row);

                            // создаем ячейки в вышесозданной строке
                            var td1 = d.createElement("td");
                            var td2 = d.createElement("td");
                            var td3 = d.createElement("td");

                            row.appendChild(td1);
                            row.appendChild(td2);
                            row.appendChild(td3);

                            last_id = last_id + 1;

                            // добавляем поля в ячейки
                            td1.innerHTML = '<input type="text" class="form-control serch-value"name="xml'+last_id+'">';
                            td2.innerHTML = '<input type="text" class="form-control serch-value"name="values'+last_id+'">';
                            td3.innerHTML = '<input type="text" class="form-control serch-value"name="val_sort'+last_id+'">';
                        }
                    </script>
                    </tbody>
                </table>
                <div class="form-search-button text-center">
                    <button type="button" name="search" class="btn serch-value-button" onclick="add_value_f()">Добавить+</button>
                </div>

                        <div class="form-search-button text-center">
                            <button type="submit" name="search2" class="btn serch-value-button">Скачать</button>
                        </div>
                    </form>
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 1
Psychosynthesis
@Psychosynthesis
Fullstack developer and radio engineer
Ну... Во первых я бы добавил форме атрибут name (пусть для примера это будет "superform"). После этого она станет доступна по document.forms.superform. Хотя вроде и сейчас должна быть доступна как document.forms.item(0), но с нэймингом удобнее...

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

Если же вам принципиальна таблица, попробуйте переопределить метод Submit формы и написать свой обход по элементам и отправку, это гарантированный вариант.

Ещё, как вариант, можно после добавления элементов попробовать дёрнуть метод form.reset().
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы