JavaScript добавить на форму поля ввода <input ...
Волею судеб мне пришлось заняться web-программированием...
Есть примерно следующее:
<table id="tab1" border="0">
<tr>
<th>Наименоваине</th>
<th>Начальный остаток</th>
<th>Приход</th>
<th>Расход</th>
<th>Конечный остаток</th>
</tr>
<tr>
<td><input type="text" id="naim1" name="naim1" value="Конь бронзовый" /></td>
<td><input type="text" id="begin1" name="begin1" value="10" /></td>
<td><input type="text" id="in1" name="in1" value="4" /></td>
<td><input type="text" id="out1" name="out1" value="6" /></td>
<td><input type="text" id="end1" name="end1" value="12" /></td>
</tr>
<tr>
<td><input type="text" id="naim2" name="naim2" value="Пиджак турецкий" /></td>
<td><input type="text" id="begin2" name="begin2" value="5" /></td>
<td><input type="text" id="in2" name="in2" value="1" /></td>
<td><input type="text" id="out2" name="out2" value="3" /></td>
<td><input type="text" id="end2" name="end2" value="7" /></td>
</tr>
<tr>
<td><input type="text" id="naim3" name="naim3" value="" /></td>
<td><input type="text" id="begin3" name="begin3" value="" /></td>
<td><input type="text" id="in3" name="in3" value="" /></td>
<td><input type="text" id="out3" name="out3" value="" /></td>
<td><input type="text" id="end3" name="end3" value="" /></td>
</tr>
</table>
<input type="submit" value="Сохранить"/>
</form>
Вдогонку вопрос про css: как эту формочку сделать немного похожей на таблицу, а не на набор полей ввода? Например, выглядеть такой, как таблица Excel или компонент Grid в распространённых не-web средах программирования.
PS. Прошу не пинать ногами за тупые вопросы.
PPS. Может быть, есть более удобный способ получить от пользователя табличные данные?
i = 1;
while( document.getElementById("naim"+i) !== "undefined" && hasEmptyFields == false ) {
if( document.getElementById("naim"+i).value == "" ) hasEmptyFields = true;
// бла-бла для остального
i++;
}
Ну а далее ясно. Если hasEmptyFields == false, то надо добавить ещё строчку. Как добавлять - ну желательно через DOM добавлять строку к ячейке, а к ней уже ячейки, так как простым innerHTML здесь не очень подойдет, но можно.
Как Grid - пропишите в свойствах width: 100%; height: 100%; у input
<!-- и т.д -->
<td><input type="text" id="naim1" name="naim1" value="Конь бронзовый" style="width: 100%; height: 100%" /></td>
<!-- и т.д -->
Спасибо за наводку! Творчески переработав, получил
function ExtendForm()
{
var table = document.getElementById("tab1");
var td3_1 = document.createElement("td");
td3_1.innerHTML = "<input type=\"text\" id=\"naim\"" + i + " name=\"naim\"" + i + " value=\"\" />";
var td3_2 = document.createElement("td");
td3_2.innerHTML = "<input type=\"text\" id=\"begin\"" + i + " name=\"begin\"" + i + " value=\"\" />";
var td3_3 = document.createElement("td");
td3_3.innerHTML = "<input type=\"text\" id=\"in\"" + i + " name=\"in\"" + i + " value=\"\" />";
var td3_4 = document.createElement("td");
td3_4.innerHTML = "<input type=\"text\" id=\"out\"" + i + " name=\"out\"" + i + " value=\"\" />";
var td3_5 = document.createElement("td");
td3_5.innerHTML = "<input type=\"text\" id=\"end\"" + i + " name=\"end\"" + i + " value=\"\" />";
tr3 = document.createElement("tr");
tr3.appendChild(td3_1);
tr3.appendChild(td3_2);
tr3.appendChild(td3_3);
tr3.appendChild(td3_4);
tr3.appendChild(td3_5);
allRows = table.getElementsByTagName("tr");
tr3 = allRows[0].parentNode.appendChild(tr3);
}
</script>
[HTML]<style type="text/css">
table#tab1
{
border-collapse: collapse;
border: 2px solid gray;
}
table#tab1 td, th
{
border: 1px solid gray;
padding: 2px;
}
table#tab1 input
{
border: 0px;
width: 95%;
height: 100%;
}
</style>
[/HTML]
[HTML]
<body>
<form action="count.php" method="post">
<table id="tab1">
<tr>
...
и т.д. как было
[/HTML]
Спасибо! Мой вариант:[html]<style type="text/css">
.mycell
{
width: 100%;
height: 100%;
border-style: solid;
border-width: 1px;
}
.mycell_right
{
width: 100%;
height: 100%;
border-style: solid;
border-width: 1px;
border-left: none;
}
.mycell_bottom_left
{
width: 100%;
height: 100%;
border-style: solid;
border-width: 1px;
border-top: none;
}
.mycell_bottom
{
width: 100%;
height: 100%;
border-style: solid;
border-width: 1px;
border-left: none;
border-top: none;
}
</style>
<!-- и т.д. -->
<script language="JavaScript">
var r = 4;
var form_ids = ['naim', 'begin', 'in', 'out', 'end'];
function ExtendForm()
{
var table = document.getElementById('tab1');
var td3 = new Array(5);
var tr3 = document.createElement('tr');
for(k = 0; k < 5; k++)
{
td3[k] = document.createElement('td');
td3[k].innerHTML = '<input type="text" id="'
+ form_ids[k] + r + '" name="' + form_ids[k] + r
+ '" value="" class="mycell_bottom' + ((k == 0)? '_left' : '') + '"'
+ 'align=' + ((k == 0)? '"left"' : '"right"') + ' />';
tr3.appendChild(td3[k]);
}
allRows = table.getElementsByTagName("tr");
tr3 = allRows[0].parentNode.appendChild(tr3);
r++;
}
</script>
<!-- и т.д. -->
<form action="count.php" method="post">
<table id="tab1" border="0" cellpadding="0" cellspacing="0">
<tr>
<td><input type="text" id="naim1" name="naim1" value="+++ 1" class="mycell" /></td>
<td><input type="text" id="begin1" name="begin1" align="right" value="10" class="mycell_right" /></td>
<td><input type="text" id="in1" name="in1" value="4" class="mycell_right" /></td>
<td><input type="text" id="out1" name="out1" value="6" class="mycell_right" /></td>
<td><input type="text" id="end1" name="end1" value="12" class="mycell_right" /></td>
</tr>
<!-- и т.д. -->
[/html]
Но Ваш, безусловно, симпатичнее.