Цитата:
|
Цитата:
Что реально удаляет строку?
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, время: 12:33. |