|
Как переназначить id всех элементов <input> в форме при добавление нового <input>
Есть форма с таблицей, где в каждой строке имеется input:
<input id="chek1" <input id="chek2" <input id="chek3" В каждой строке есть кнопка "+", которая копирует строку с текущим id при помощи функции JS. Получается следующее: <input id="chek1" <input id="chek2" <input id="chek2" <input id="chek3" Теперь значения id не уникальны, и невозможно обратиться к ним по id. Как же дополнить уже имеющуюся функцию JS циклом, чтобы получить: <input id="chek1" <input id="chek2" <input id="chek3" <input id="chek4" Буду очень благодарен. |
Цитата:
|
Цитата:
Если вставка не лимитируется со стороны SQL, значит при загрузке страницы получить в форме элементы, которые клонируются, среди них найти максимальный номер, например: var max = element.id.match(/\d+$/); - где element это полученный каким либо способом элемент. при каждом клонировании увеличивая его на 1, и добавляя к значению атрибута элемента. |
Прежде всего можно попробовать переписать функцию клонирования. Что бы она добавляла цифру в id при клонировании.
А тот цикт который ты просишь довольно прост: <body> <div id="ma1"></div> <div id="ma1"></div> <div id="ma2"></div> <div id="ma3"></div> <div id="ma4"></div> <div id="ma4"></div> <div id="ma5"></div> <div id="ma7"></div> </body> var elem=document.getElementsByTagName("div") var i = 0; for (i = 0;i<elem.length;i++){ elem[i].id="chek"+i; } |
Цитата:
Прокрутить по name и назначить id в цикле!!! СПАСИБО! Просто потом надо будет при пометке чекбокса скрывать или показывать этот элемент. И у него должно быть уникальное значение. Нет, все же JS -это класс, хотя я больше в php работаю. :) |
Функция клонирования - не моя.
Она отлично работает. Ее не хотелось бы трогать. Если что, вот эти функции клонирования и удаления строк:Н <script type="text/javascript"> //Удаление строки function droptr(btn){ if(document.getElementById) { tr = btn; while (tr.tagName != 'TR') tr = tr.parentNode; tr.parentNode.removeChild(tr); checkForLast(); } } //Добавление строки function addtr(btn){ if(document.getElementById) { tr = btn; while (tr.tagName != 'TR') tr = tr.parentNode; var idSuffix = Math.round(Math.random()*1000); var newTr = tr.parentNode.insertBefore(tr.cloneNode(true),tr.nextSibling); thisChilds = newTr.getElementsByTagName('td'); checkForLast(); } } } //Активация/дезактивация кнопки минус ( - ) //Неактивна, когда строка строка одна или нет ни одной добавленной строки function checkForLast(){ btns = document.getElementsByName('drop'); for (i = 0; i < btns.length; i++){ btns[i].disabled = (btns.length == 1) ? true : false; } } </script> Надо ли изменять эти функции или просто в них добавить вышеуказанный цикл? |
Цитата:
Вам id вообще не нужны. Пользователь выбирает и показывает _что_ скопировать (равно удалить, редактировать). Выбрал - скопировали - осталось выбранное - можно редактировать. Все просто. Ну то есть после копирования надо лишь перенести фокус на копию чтоб она осталась активной. |
Цитата:
Пользователь копирует строку. А в строке помимо прочего есть еще и чекбоксы. Это форма. Так вот необходимо, чтобы в скрипт передавались не только помеченные чекбоксы, а еще и непомеченные, для чего до чекбокса стоит Hidden с таким же названием и value=0. И при пометке чекбокса надо сделать этот hidden style="display=none". В общем там все сложно. :) Перебор id по getElementsByTagName мне подходит. |
А если начать с этого - Пользователь копирует строку. - цель?
|
Цитата:
Если вам для веры нужен id, то значит нужен. А вообще он там в упор не нужен, ибо есть пользователь и значит интерфейс попросту интерактивный. Элемент копируется (клонируется) со всем своим барахлом - с хиденами и протча - как два пальца об асфальт. |
Часовой пояс GMT +3, время: 10:49. |
|