@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>
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ответы на вопрос 1
Psychosynthesis
@Psychosynthesis
Fullstack developer and radio engineer
Ну... Во первых я бы добавил форме атрибут name (пусть для примера это будет "superform"). После этого она станет доступна по document.forms.superform. Хотя вроде и сейчас должна быть доступна как document.forms.item(0), но с нэймингом удобнее...

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

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

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

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

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