Показать сообщение отдельно
  #6 (permalink)  
Старый 05.12.2017, 19:38
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
table tbody:first-child td:last-child input {
    display: none; /* кнопка удаления в первой строке таблицы недоступна*/
}
</style>
<script type="text/javascript">
$(function() {
    var tbl = $('table');
    $('#add').click(function() {
        tbl.children() //получаем детишек - TR/TBODY
           .first() //берем первого
           .clone() //клонируем
           .appendTo(tbl) //добавляем в таблицу 
           .find('input') //получаем поля ввода
           .filter(':text').val('') //выбираем текстовые поля (если кнопка удаления не input, то этого не надо)
           .end() //в начало набора
           .last().click(function() { //получаем кнопку удаления (если кнопка удаления не input, то ищем нужно вместо last())
                $(this).closest('tr').remove() //удаляем добавленную строку 
           })
    })
});
</script>
</head>
<body>
<form action="" method="post">
    <table>
        <tr>
            <td>
                <input name="a[]" />
            </td>
            <td>
                <input name="b[]" />
            </td>
            <td>
                <input name="c[]" />
            </td>
            <td>
                <input type="button" value="Del" />
            </td>
        </tr>
    </table>
</form>
<button id="add">Add</button>
</body>
</html>


При отправлении формы в массиве $_POST будет три массива a, b, c соответственно. Так удобно, ибо, например, для того чтобы проверить и получить только те поля которые заполнены, достаточно произвести пересечение этих массивов по ключам (индексам). А для формирования многострочного запроса в базу (для записи), достаточно пересечь результат пересечения с каждым набором и объединить их по полям - array_map(null, $_POST['a'], $_POST['b'], $_POST['c']).
Ответить с цитированием