.. Кажется, он не должен быть, но все же он работает.
Например:
<table>
.....
<form action='/foo'>
<tr>
<td><input type='text'></td>
<td><input type='submit' value='bar'>
</tr>
</form>
</table>
Однако, если у вас есть таблица с несколькими формами, есть ли лучший способ сделать это?
Просто прошу из любопытства.
Примечание. Я также видел, что некоторые крупные компании имеют формы в больших таблицах, где есть скрытые поля ввода вверху, и они автоматически заполняются через javascript и отправляются с дополнительными данными из этой строки. Это также кажется грязным и чрезмерно сложным.
Нет, это недействительная разметка.
Из HTML 4.01 DTD:
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->
Здесь (%block;|SCRIPT)+
означает, что элемент формы может содержать только скрипты и элементы блока, где %block
определяется как
<!ENTITY % block
"P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
Другими словами, вы можете обернуть форму вокруг таблицы, но не строку таблицы.