:あなたは、「編集可能なグリッド」、すなわち、フォームの行のいずれかを行うことができます構造のようなテーブル、使用CSSを模倣TABLEタグのレイアウトしたい場合display:table
、display:table-row
などをdisplay:table-cell
。
テーブル全体をフォームでラップする必要はありません。また、テーブルの各行に対して個別のフォームとテーブルを作成する必要もありません。
代わりにこれを試してください:
<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>
TABLE全体をFORMでラップする場合の問題は、すべてのフォーム要素が送信時に送信されることです(おそらく望ましいことですが、おそらくそうではありません)。このメソッドを使用すると、「行」ごとにフォームを定義し、送信時にそのデータ行のみを送信できます。
TRタグ(またはFORMの周りのTR)でFORMタグをラップする場合の問題は、HTMLが無効であることです。FORMは通常どおり送信を許可しますが、この時点でDOMは壊れています。注:FORMまたはTRの子要素をJavaScriptで取得してみてください。予期しない結果が生じる可能性があります。
IE7はこれらのCSSテーブルスタイルをサポートしておらず、IE8は「標準」モードにするためにdoctype宣言が必要になることに注意してください(これを試してみてください)。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
display:table、display:table-row、display:table-cellをサポートする他のブラウザーは、CSSデータテーブルを、TABLE、TR、およびTDタグを使用した場合と同じように表示する必要があります。それらのほとんどは行います。
また、行グループを別のDIVでdisplay: table-header-group
、table-row-group
およびでラップすることにより、THEAD、TBODY、TFOOTを模倣することもできますtable-footer-group
。
注:このメソッドで実行できない唯一のことはcolspanです。
この図を確認してください:http : //jsfiddle.net/ZRQPP/
<form>
中に入れることはできません<tr>
。