Jquery множественный выбор / ввод данных post array

#php #jquery #forms #select #input

#php #jquery #формы #выберите #ввод

Вопрос:

У меня такая ситуация с html:

         <div id="art_select">
        <!-- start row 1 -->
             <select name="articolo[]" id="first" class="art">
                        <option value="">Select product</option>
                        <option value="2">IN FERMENTUM ANTE SIT AMET LOREM ELEMENTUM AC ELEIFEND AMET.</option>
            <option value="1">NUNC ID PORTTITOR ARCU. CRAS CONVALLIS ULLAMCORPER VOLUTPAT.</option>
                                    </select>
                                    <input type="text" name="qta[]" id="qta-2"><br>
         <!-- end row 1 -->
 <!-- start row 2 -->
        <select name="articolo[]" class="art">
                                    <option value="">Select product</option>
                                    <option value="2">IN FERMENTUM ANTE SIT AMET LOREM ELEMENTUM AC ELEIFEND AMET.</option>
            <option value="1">NUNC ID PORTTITOR ARCU. CRAS CONVALLIS ULLAMCORPER VOLUTPAT.</option>
                                    </select><input type="text" name="qta[]" id="qta-1">
        <!-- end row  2-->
 </div>
    <a href="#" onclick="return addprd(this)">  Add row</a>
  

Ссылка Добавить строку добавляет новый текст ввода select / qta.

Что я могу сделать, чтобы опубликовать данные этой формы?? (я использую php). Массив ключа => значение для каждой строки.?? Каков НАИЛУЧШИЙ способ для этого??? СПАСИБО

Ответ №1:

Назовите каждый ввод чем-то вроде row[0][qta] и row[0][articolo] , где вы увеличиваете это число для каждой новой строки.

Затем, предполагая POST, у вас будет массив данных под $_POST['row'] .

Вы должны обернуть свои строки в div , чтобы упростить задачу.

Вы могли бы вызывать эту функцию JavaScript каждый раз, когда добавляете или удаляете строку, чтобы правильно перенумеровать name атрибуты.

Пока вы делаете первый 0 .

 var renumberInputs = function() {
    $('#art_select > div').each(function(index) {
        $(this).find(':input').attr('name', function(i, name) {
            return name.replace(/[d ]/, '['   index   ']');
        });
    });
}