Как динамически поменять имя Элемента
При удалении динамически с формы Элемента необходимо повторно присвоить Элементам имена
Элемеенты добавляются 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, время: 05:18. |