Как динамически поменять имя Элемента
При удалении динамически с формы Элемента необходимо повторно присвоить Элементам имена
Элемеенты добавляются DOM <input type="text" name="val1(1)"> <input type="text" name="val1(2)"> <input type="text" name="val1(3)"> после нажатия на кнопку удалить элемент необходимо (допустим val1(2)) необходимо переименовать элементы т.е. что бы получилось следущее <input type="text" name="val1(1)"> <input type="text" name="val1(2)"> Как это реализовать. |
Тогда с какой целью даются уникальные имена? Не проще ли дать имя val1[] (тоесть <input type="text" name="val1[]" /> и на сервере работать с переданным параметром как с массивом значений ?
Для php: $val1 = $_POST['val1[]']; //$val1 = $_POST['val1']; // или так, не помню точно print_r($val1); |
После удаления элемента вызывать следующую функцию:
function inputRename() {
for(var i=0, l=document.querySelectorAll('input[type=text]').length; i<l; i++) {
document.querySelectorAll('input[type=text]')[i].name = 'val1('+(i+1)+')';
}
};
|
Тогда с какой целью даются уникальные имена? Не проще ли дать имя val1[] (тоесть <input type="text" name="val1[]" /> и на сервере работать с переданным параметром как с массивом значений ?
Для php: $val1 = $_POST['val1[]']; //$val1 = $_POST['val1']; // или так, не помню точно print_r($val1); Где можно поподробнее почитать про этот метод ну и про сам DOM |
Я так понял формат записи parameter[] не документирован, и поддерживается только некоторыми вариантами server-side'а.
PHP это однозначно. Возможно еще чем-то. В php к параметру нужно обращаться без скобок: $_POST['val1'], в html же все так, как я указал. Тут кое что об этом всем. |
Спасибо большое за помощь)
Задачу всё же решил по своему ((с) Если у тебя что то не получается - Значит ты где то недочитал , Что то недопонял)
El=this.parentNode.parentNode.parentNode.rowIndex;
htmlTable.deleteRow(this.parentNode.parentNode.parentNode.rowIndex);
document.getElementById("strok").value=tableRows.length-2;
//нужен для того что при удалении предпоследней строки почему то не обновляет имя
if(El==tableRows.length)
{
for( j = 0; j < 12; j += 1 )
{
document.getElementsByName("val"+(j+1)+"("+(El)+")")[0].name="val"+(j+1)+"("+(El-1)+")";
}
}
//И само решение проблемы
for( i = El; i <= tableRows.length; i += 1 )
{
for( j = 0; j < 12; j += 1 )
{
document.getElementsByName("val"+(j+1)+"("+(i)+")")[0].name="val"+(j+1)+"("+(i-1)+")";
}
|
| Часовой пояс GMT +3, время: 17:41. |