Динамическая генерация input-ов

 
0
 
JavaScript
ava
ursula16 | 02.08.2007, 22:39
В общем нарыл тут на форуме.. Применил.. Но косяк в том что input-ы генерируются на одной строке, а мне надо в новой строке таблицы...

<?php
// Параметры шаблона характеристик товара
echo "<script>
function addfield() {
var cont=document.getElementById(\"ch\");
var num=cont.getElementsByTagName(\"INPUT\").length+1;
var inp=document.createElement(\"INPUT\");
inp.type=\"text\";
inp.name=\"choise[\"+num+\"]\";
cont.appendChild(inp);
}
</script>";
echo "<h3>Введите шаблон товара.(Каждое введеное здесь поле будет представлять одну характеристику)</h3>";
echo "<table id='ch'><tr><input type='text' name='choise[1]' value=''></tr>
<tr><input type='text' name='choise[2]' value=''></tr>
<tr><input type='text' name='choise[3]' value=''></tr>
<tr><input type='button' onclick='addfield()' value='+'></tr></table>";
?>

Я так понимаю надо пару строк в функцию добавить для генерации <tr> и </tr>, но как сделать незнаю... smile smile
Comments (6)
ava
dXdYdZ | 03.08.2007, 00:43 #
А с PHP сгенерировать нельзя?
ava
ursula16 | 03.08.2007, 09:58 #
Нет нельзя. Ну че, неуж-то никто не знает? smile
ava
vasac | 03.08.2007, 12:43 #
Никому здесь не интересно работать php-интерпретатором, разбирать строки, склеивать, обрабатывать слеши и формировать в своей голове итоговый код. Ошибка в JS, так и показывайте итоговый js-код, заключенный в нужный тег и красиво раскрашенный.

Как, думаю, могли бы догадаться:
document.createElement("INPUT") - создает элемент input
cont.appendChild(inp) - вставляет элемент inp в cont.

Так вот вам нужно еще создать элемент TR и вставить его в таблицу, а уже в него инпут.

И, по-моему, вы забыли про TD
ava
ursula16 | 03.08.2007, 14:17 #

<script>
function addfield() {
var cont=document.getElementById("ch");
var num=cont.getElementsByTagName("INPUT").length+1;
var inp=document.createElement("INPUT");
inp.type="text";
inp.name="choise["+num+"]";
cont.appendChild(inp);
}
</script>

<table id='ch'><tr><input type='text' name='choise[1]' value=''></tr>
<tr><td><input type='text' name='choise[2]' value=''></td></tr>
<tr><td><input type='text' name='choise[3]' value=''></td></tr>
<tr><td><input type='button' onclick='addfield()' value='+'></td></tr>
</table>";

Ну тогда вот так. :biggrin. Надо перед и после input еще добавить TD и TR. Пробовал сам по аналогии добавить,чет не получается...
ava
vasac | 03.08.2007, 14:29 #
Интерфейс HTMLTableElement


var newTr = cont.insertRow(cont.rows.length - 1); // Вставляем предпоследнюю строку
var newTd = newTr.insertCell(0); // В нее столбец.

var inp = document.createElement("input");
inp.setAttribute("type", "text");
inp.setAttribute("name", "choise[" + cont.rows.length - 1) + "]");
newTd.appendChild(inp);
ava
ursula16 | 08.08.2007, 10:17 #
Спасибо,заработало. Но теперь образовалась другая проблема... Почему на следущей странице через foreach в php выдает только первые 3 строки... А етих javascript input-ов как-будто и небыло. smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  vasac   dXdYdZ   ursula16
advanced
Submit