Furax |
Отправлено: 24 июля 2009 — 02:59
|
Newbie
Покинул форум
Сообщений всего: 49
Дата рег-ции: Февр. 2009
Репутация: 8
|
Так. Проблема была в том, что мы, как обычно, забыли про tbody, а между тем все строки - его "дети", а не tablа.
Однако есть ещё одна проблема. Стандарты W3C запрещают formе быть дочкой tbody (как для XHTML 1.0 Strict, так и для HTML 4.01 Transitional). Соответственно, браузеры пересчитывают этот "некорректный код" - смотри, например, вложенный рисунок, - это вывод Opera Dragonity для вот такого документа:
CODE:<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=windows-1251">
<title>Формы в таблице</title>
<style type="text/css">
<!--
input
{
width: 100%;
}
//-->
</style>
<script type="text/javascript">
<!--
function addForm()
{
var form = document.createElement('form');
form.action = '';
form.method = 'post';
var tr = document.createElement('tr');
var th = document.createElement('th');
th.width = '50%';
th.appendChild(document.createTextNode('Имя любимого робота'));
var td = document.createElement('td');
td.width = '50%';
var input = document.createElement('input');
input.type = 'text';
input.name = 'robotName';
td.appendChild(input);
tr.appendChild(th);
tr.appendChild(td);
form.appendChild(tr);
tr = document.createElement('tr');
th = document.createElement('th');
th.width = '50%';
th.appendChild(document.createTextNode('Сколько лет Вы проспали за всю жизнь'));
td = document.createElement('td');
td.width = '50%';
input = document.createElement('input');
input.type = 'text';
input.name = 'sleepTotal';
td.appendChild(input);
tr.appendChild(th);
tr.appendChild(td);
form.appendChild(tr);
var lastTR = document.getElementById('buttonTR');
alert(lastTR.previousSibling.tagName);
lastTR.parentNode.insertBefore(form, lastTR);
}
//-->
</script>
</head>
<body>
<table width="100%" border="1">
<form action="" method="POST">
<tr>
<th width="50%">Имя</th>
<td width="50%"><input type="text" name="name"></td>
</tr>
<tr>
<th width="50%">Ник</th>
<td width="50%"><input type="text" name="nick"></td>
</tr>
</form>
<form action="" method="POST">
<tr>
<th width="50%">Вероисповедание</th>
<td width="50%"><input type="text" name="religion"></td>
</tr>
<tr>
<th width="50%">Объём тела, м<sup>3</sup></th>
<td width="50%"><input type="text" name="body"></td>
</tr>
</form>
<tr id="buttonTR">
<th colspan="2"><input type="button" value="Добавить ещё форму" onClick="addForm()"></th>
</tr>
</table>
</body>
</html> Сам документ, кстати, работает, но из-за этой проблемы со стандартом - не так, как должен. Прикреплено изображение
|
|
|
yura3d |
Отправлено: 24 июля 2009 — 08:07
|
ExBB Team ExBB Developer ExBB Mods Author
Покинул форум
Сообщений всего: 3394
Дата рег-ции: Февр. 2009
Откуда: Минск, Беларусь
Репутация: 353
|
Furax пишет:Однако есть ещё одна проблема. Стандарты W3C запрещают formе быть дочкой tbody (как для XHTML 1.0 Strict, так и для HTML 4.01 Transitional).
Каким образом тогда лучше сделать? Например, так (таблица с полями формы внутри самой формы):
CODE:<form>
<table>
<tr>
<td>Поле: </td>
<td><input type="text"></td>
</tr>
</table>
</form> ?
В принципе не обязательно, чтобы было несколько форм, я на Ajax смогу реализовать частичную отправку одной формы, если это потребуется |
|
|
|