Jeśli chcesz edycji „siatkę”, czyli tabelę jak strukturę, która pozwala, aby każdy z wierszy formularza, za pomocą CSS, który naśladuje układ tabeli tagu: display:table
, display:table-row
, i display:table-cell
.
Nie ma potrzeby zawijania całego stołu w formularzu i nie trzeba tworzyć osobnego formularza i tabeli dla każdego widocznego wiersza tabeli.
Spróbuj zamiast tego:
<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>
Problem z zawijaniem całego TABELI w FORMULARZE polega na tym, że wszystkie elementy formularza zostaną wysłane po przesłaniu (być może jest to pożądane, ale prawdopodobnie nie). Ta metoda pozwala zdefiniować formularz dla każdego „wiersza” i przesłać tylko ten wiersz danych po przesłaniu.
Problem z owijaniem znacznika FORM wokół znacznika TR (lub TR wokół FORMULARZA) polega na tym, że jest to nieprawidłowy kod HTML. FORMAT nadal pozwala na przesyłanie w zwykły sposób, ale w tym momencie DOM jest uszkodzony. Uwaga: spróbuj pobrać elementy potomne z FORMULARZA lub TR z JavaScript, może to prowadzić do nieoczekiwanych wyników.
Zauważ, że IE7 nie obsługuje tych stylów tabel CSS, a IE8 będzie potrzebować deklaracji typu doctype, aby przejść do trybu „standardów”: (spróbuj tego lub podobnego)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Każda inna przeglądarka obsługująca display: table, display: table-row i display: table-cell powinna wyświetlać twoją tabelę danych css tak samo, jak gdybyś używał tagów TABLE, TR i TD. Większość z nich ma.
Pamiętaj, że możesz także naśladować THEAD, TBODY, TFOOT owijając swoje grupy wierszy w innym div z display: table-header-group
, table-row-group
i table-footer-group
odpowiednio.
UWAGA: Jedyne, czego nie można zrobić z tą metodą, to colspan.
Sprawdź tę ilustrację: http://jsfiddle.net/ZRQPP/
<form>
nie można go włożyć do środka<tr>
.