Добавление полей к форме
Надо функцию, добавляющую поле к форме, заюзать в двух местах в одной форме. В смысле, есть два не зависящих друг от друга поля, которые будут дублироваться.
Это скриптик, который я нашла: var c=0; function rmline(q) { s=document.getElementById('table').innerHTML; s=s.replace(/[\r\n]/g,''); re=new RegExp('<tr id="?newline"? nomer="?\\['+q+'.*?<\\/tr>','gi'); s=s.replace(re,''); document.getElementById('table').innerHTML=s; return false; } function addline() { c++; s=document.getElementById('table').innerHTML; s=s.replace(/[\r\n]/g,''); re=/(.*)(<tr id=.*>)(<\/table>)/gi; re2=/\[\d+\]/gi; s1=s.replace(re,'$2'); s2=s1.replace(re2,'['+c+']'); s2=s2.replace(/(rmline\()(\d+\))/gi,'$1'+c+')'); s=s.replace(re,'$1$2'+s2+'$3'); document.getElementById('table').innerHTML=s; return false; } А так у меня выглядит кусочек, где он используется: <span id="table"> <table> <tr> <td>'.$text.'</td> <td><a href="#" onclick="return addline();">добавить</a></td> </tr> <tr id="newline" nomer="[0]"> <td><input type="text" name="'.$fieldname.'[0]" size=24></td> <td valign="top"><a href="#" onclick="return rmline(0);">удалить</a></td> </tr> </table> </span> <input type="hidden" name="count" value="0"> Если я правильно понимаю (что не факт), надо, чтобы при тыке на "добавить" отправлялось еще какое-то значение (пусть fieldname), а в скрипте оно учитывалось и скрипт выполнялся именно в поле с этим значением... В JavaScript не разбираюсь. Совсем :-? Вариант забить на это и поэтапно добавить сначала одно, потом другое, не рассматривается. Вариант скопировать скрипт целиком и приткнуть в обоих местах с разным id рассматривается, но как-то это некрасиво, мне кажется, что по-другому должно быть :rolleyes: |
не проверял. но примерно будет выглядеть так:
function add_new_row() { var our_table = document.getElementById('table').getElementByTagName('table')[0]; var allrows = our_table.rows.length; // вычислим количество строк в таблице our_table.insertRow(allrows); // добавляем строку в таблицу our_table.rows[allrows].insertCell(0); // добавляем ячейки our_table.rows[allrows].insertCell(1); our_table.rows[allrows].cells[0].innerHTML = "some text or data"; // добавляем значения в ячейки our_table.rows[allrows].cells[1].innerHTML = "some text or data"; } function deleteRow(r) { var i=r.parentNode.parentNode.rowIndex; document.getElementById('table').getElementByTagName('table')[0].deleteRow(i); } |
А поточнее?..а то так у меня не работает, а языка не разумею *SORRY*
Кстати, тот-то вариант рабочий, но он срабатывал строго там, где функция в первый раз вызывается, а мне в двух местах нуна... |
извините, но мы тут помогаем разобраться если ваш скрипт не работает, или вы не знаете как сделать. вместо Вас писать или адаптировать скрипты никто не будет. Либо в раздел работа.
|
Извините )
Буду учиться |
deliro,
вот это правильный подход. советую наведатся в раздел книги сайта также советую прочитать весь цикл статей из одноименного раздела. там статьи есть как от начального уровеня, так и более глубокие. но хотя бы синтаксис перед их прочтением надо знать. |
Хе, уже читаю.
Вопрос, правда, не по теме, и не знаю, может спрашивали где *делает глазищи виноватые-виноватые*: В JavaScript можно как-нибудь посмотреть html-код, получившийся в результате действия? |
Firebug: вкладка html;
WebDeveloperBar: View generated content. Ну или банально в FF: CTRL+A, правая кнопка, исходный код выделенного фрагмента. И еще куча способов :) |
Часовой пояс GMT +3, время: 23:16. |