Цитата:
|
Цитата:
Что реально удаляет строку? parentId.addEventListener('click', function(evt){ if(evt.target.closest('.deleteRow')) { evt.target.closest('tr').remove(); countOfFields--; curFieldNameId = curFieldNameId-1; } }) Или function deleteField(a) { if (countOfFields > 1) { // Получаем доступ к ДИВу, содержащему поле var contDiv = a.parentNode; // Удаляем этот ДИВ из DOM-дерева contDiv.parentNode.removeChild(contDiv); // Уменьшаем значение текущего числа полей } // Возвращаем false, чтобы не было перехода по сслыке return false; } Если первое, то туда тоже надо вставить repos() перед выходом (А зачем тогда второе?) Цитата:
Удалять лишнее я тоже не собираюсь |
Удаляет первое. Извиняюсь, случайно добавил вторую функцию, она не нужна.
repos() добавил, но все равно нумерация не меняется |
Тут меняется.
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" lang="ru"> <meta name="viewport" content="width=device-width, initial-scale=1.0" > <title>TEST</title> </head> <body id="body" > <table id="parentId"> <thead> <tr> <th>№</th> <th>Номенклатура</th> <th>Кол-во</th> <th>Цена</th> <th>Сумма</th> </tr> </thead> <tr> <td><input type="number" value="1" name="str[]" readonly></td> <td><input type="text" class="form-control" id="name" name="name[]" required></td> <td><input type="number" class="form-control num" id="num" name="num[]" value="" required></td> <td><input type="text" class="form-control price" id="price" name="price[]" value="" required></td> <td><input type="text" class="form-control sum" id="sum" name="sum[]" value="" readonly></td> <td><a class="deleteRow" href="#"><font color="red">[-]</font></a></td> </tr> <tr> <td><input type="number" value="1" name="str[]" readonly></td> <td><input type="text" class="form-control" id="name" name="name[]" required></td> <td><input type="number" class="form-control num" id="num" name="num[]" value="" required></td> <td><input type="text" class="form-control price" id="price" name="price[]" value="" required></td> <td><input type="text" class="form-control sum" id="sum" name="sum[]" value="" readonly></td> <td><a class="deleteRow" href="#"><font color="red">[-]</font></a></td> </tr> <tr> <td><input type="number" value="1" name="str[]" readonly></td> <td><input type="text" class="form-control" id="name" name="name[]" required></td> <td><input type="number" class="form-control num" id="num" name="num[]" value="" required></td> <td><input type="text" class="form-control price" id="price" name="price[]" value="" required></td> <td><input type="text" class="form-control sum" id="sum" name="sum[]" value="" readonly></td> <td><a class="deleteRow" href="#"><font color="red">[-]</font></a></td> </tr> <tr> <td><input type="number" value="1" name="str[]" readonly></td> <td><input type="text" class="form-control" id="name" name="name[]" required></td> <td><input type="number" class="form-control num" id="num" name="num[]" value="" required></td> <td><input type="text" class="form-control price" id="price" name="price[]" value="" required></td> <td><input type="text" class="form-control sum" id="sum" name="sum[]" value="" readonly></td> <td><a class="deleteRow" href="#"><font color="red">[-]</font></a></td> </tr> <tr> <td><input type="number" value="1" name="str[]" readonly></td> <td><input type="text" class="form-control" id="name" name="name[]" required></td> <td><input type="number" class="form-control num" id="num" name="num[]" value="" required></td> <td><input type="text" class="form-control price" id="price" name="price[]" value="" required></td> <td><input type="text" class="form-control sum" id="sum" name="sum[]" value="" readonly></td> <td><a class="deleteRow" href="#"><font color="red">[-]</font></a></td> </tr> </table> <script> var countOfFields = 5 , curFieldNameId = 0; // что бы не было ошибки function repos () { var rows = document.getElementById('parentId').tBodies[0].rows; var i; for (i = 0; i < rows.length; i++) { rows[i].cells[0].children[0].value = i+1; } } parentId.addEventListener('click', function(evt){ if(evt.target.closest('.deleteRow')) { evt.target.closest('tr').remove(); countOfFields--; curFieldNameId = curFieldNameId-1; repos(); } }) repos(); </script> </body> </html> |
Сейчас происходит так, есть 4 поля, добавленных пользователем:
1 2 3 4 Он решил удалить одно поле например 2 получается 1 3 4 при этом если он опять нажмет на кнопку добавить поле то нумерация идет так 1 3 4 4 5 и .т.д нужно чтобы при удалении обновлялась нумерация и следуующие добавленные поля шли по порядку |
Цитата:
Вот только что у вас является ограничением числа их на странице? Если вы следите за количеством записей в базе, которые в нее еще можно добавить, еще можно понять. В противном случае есть только одно ограничение накладываемое сервером - количество переменных в запросе, в РНР по умолчанию это вроде бы 1000, и увеличивать его, это понижать устойчивость сервера к одному из видов атаки. Переменных, то есть полей формы, а не блоков добавляемых на странице. В противном случае я не знаю к чему это у вас. |
Цитата:
И где код, который обрабатывает нажатие? |
Вот код который обрабатывает добавление
function addField() { countOfFields++; curFieldNameId++; var div = document.createElement("tr"); div.innerHTML = "<td><input name=\"str[" + curFieldNameId + "]\" type=\"number\" value=\"" + curFieldNameId + "\" style=\"width: 50px; border:0px;\" readonly> </td><td><input style=\"width:450px;\" type=\"text\" class=\"form-control\" id=\"name\" name=\"name[" + curFieldNameId + "]\" required></td><td><input style=\"width:100px;\" type=\"number\" onkeyup=\"this.value = this.value.replace(/[^\\d]/g,'');\" class=\"form-control num\" id=\"num\" name=\"num[" + curFieldNameId + "]\" required></td><td><input style=\"width:200px;\" type=\"text\" class=\"form-control price\" id=\"price\" onkeyup=\"this.value = this.value.replace(/[^\\-?\\d+(\\.\\d{0,})?]/g,'');\" name=\"price[" + curFieldNameId + "]\" required></td><td><input type=\"text\" class=\"form-control sum\" id=\"sum\" name=\"sum[" + curFieldNameId + "]\" readonly></td><td><a class=\"deleteRow\" href=\"#\"><font color=\"red\">[-]</font></a></td>"; document.getElementById("parentId").appendChild(div); return false; } Вот кнопка <a onclick="return addField()" href="#" >+</a> |
Cтроку 12 запишите так
document.getElementById("parentId").tBodies[0].appendChild(div) |
Да теперь все как надо, спасибо огромное!
|
Часовой пояс GMT +3, время: 10:56. |