Wenn Sie einen „editierbaren Raster“ , dh eine Tabelle , wie Struktur , die Sie , dass imitiert den TABLE - Tag Layout eine der Zeilen eine Form, die Verwendung CSS machen kann: display:table
, display:table-row
, und display:table-cell
.
Es ist nicht erforderlich, die gesamte Tabelle in ein Formular zu verpacken und für jede scheinbare Zeile Ihrer Tabelle ein separates Formular und eine separate Tabelle zu erstellen.
Versuchen Sie stattdessen Folgendes:
<style>
DIV.table
{
display:table;
}
FORM.tr, DIV.tr
{
display:table-row;
}
SPAN.td
{
display:table-cell;
}
</style>
...
<div class="table">
<form class="tr" method="post" action="blah.html">
<span class="td"><input type="text"/></span>
<span class="td"><input type="text"/></span>
</form>
<div class="tr">
<span class="td">(cell data)</span>
<span class="td">(cell data)</span>
</div>
...
</div>
Das Problem beim Umschließen der gesamten TABELLE in ein FORMULAR besteht darin, dass alle Formularelemente beim Senden gesendet werden (möglicherweise ist dies erwünscht, aber wahrscheinlich nicht). Mit dieser Methode können Sie für jede "Zeile" ein Formular definieren und beim Senden nur diese Datenzeile senden.
Das Problem beim Umschließen eines TR-Tags mit einem FORM-Tag (oder eines FORM-Tags mit TR) besteht darin, dass es sich um ungültiges HTML handelt. Das FORMULAR erlaubt weiterhin das Senden wie gewohnt, aber zu diesem Zeitpunkt ist das DOM defekt. Hinweis: Versuchen Sie, die untergeordneten Elemente Ihres FORMULARS oder TR mit JavaScript abzurufen. Dies kann zu unerwarteten Ergebnissen führen.
Beachten Sie, dass IE7 diese CSS-Tabellenstile nicht unterstützt und IE8 eine Doctype-Deklaration benötigt, um in den "Standard" -Modus zu gelangen: (versuchen Sie dies oder etwas Äquivalentes)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Jeder andere Browser, der display: table, display: table-row und display: table-cell unterstützt, sollte Ihre CSS-Datentabelle genauso anzeigen wie bei Verwendung der Tags TABLE, TR und TD. Die meisten von ihnen tun es.
Beachten Sie, dass Sie auch mimische THEAD, TBODY, TFOOT durch Ihre Zeilengruppen in einem anderen DIV mit Einwickeln display: table-header-group
, table-row-group
und table-footer-group
jeweils.
HINWEIS: Das einzige, was Sie mit dieser Methode nicht tun können, ist Colspan.
Schauen Sie sich diese Abbildung an: http://jsfiddle.net/ZRQPP/
<form>
kann nicht hineingelegt werden<tr>
.