Jquery множественный выбор / ввод данных пост массива - PullRequest
0 голосов
/ 03 мая 2011

У меня есть эта ситуация 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). Массив ключа => значение каждого ряда. ?? Какой лучший способ сделать это ??? THANKSS

1 Ответ

0 голосов
/ 03 мая 2011

Назовите каждый вход, например, 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 + ']');
        });
    });
}
...