Nếu bạn muốn có một "lưới có thể chỉnh sửa", tức là một bảng như cấu trúc cho phép bạn thực hiện bất kỳ hàng một hình thức, việc sử dụng CSS mà bắt chước bố trí TABLE thẻ của: display:table
, display:table-row
, và display:table-cell
.
Không cần phải quấn toàn bộ bảng của bạn trong một biểu mẫu và không cần phải tạo biểu mẫu và bảng riêng cho mỗi hàng rõ ràng của bảng.
Hãy thử điều này thay vì:
<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>
Vấn đề với gói toàn bộ TABLE trong một MẪU là bất kỳ và tất cả các yếu tố hình thức sẽ được gửi về nộp (có lẽ đó là mong muốn nhưng có lẽ không). Phương pháp này cho phép bạn xác định biểu mẫu cho mỗi "hàng" và chỉ gửi hàng dữ liệu đó khi gửi.
Sự cố khi gói thẻ FORM xung quanh thẻ TR (hoặc TR xung quanh MẪU) là HTML không hợp lệ. MẪU sẽ vẫn cho phép gửi như bình thường nhưng tại thời điểm này DOM bị hỏng. Lưu ý: Hãy thử lấy các phần tử con của MẪU của bạn hoặc TR với JavaScript, nó có thể dẫn đến kết quả không mong muốn.
Lưu ý rằng IE7 không hỗ trợ các kiểu bảng CSS và IE8 sẽ cần một tuyên bố DOCTYPE để có được nó thành "tiêu chuẩn" chế độ: (hãy thử một cái gì đó hay này tương đương)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Bất kỳ trình duyệt khác hỗ trợ hiển thị: bảng, hiển thị: table-row và display: table-cell sẽ hiển thị bảng dữ liệu css của bạn giống như nó nếu bạn đang sử dụng các thẻ TABLE, TR và TD. Hầu hết trong số họ làm.
Lưu ý rằng bạn cũng có thể bắt chước THEAD, TBODY, TFOOT bằng cách bao gồm các nhóm hàng của bạn trong một DIV khác với display: table-header-group
, table-row-group
và table-footer-group
tương ứng.
LƯU Ý: Điều duy nhất bạn không thể thực hiện với phương pháp này là colspan.
Check-out minh hoạ này: http://jsfiddle.net/ZRQPP/
http://www.hotdesign.com/seybold/ – Stephen
lý do tại sao không loại bỏ các biểu mẫu và đã giải phóng bảng của bạn. –
Như đã thảo luận trong các câu trả lời có vẻ như là một lựa chọn tốt hơn là sử dụng một số loại AJAX để làm điều này. Câu hỏi sau đây chứa một bộ sưu tập các plugin lưới jQuery sẽ cho phép bạn làm những gì bạn muốn; hy vọng bạn thấy điều này hữu ích. http://stackoverflow.com/questions/159025/jquery-grid-recommendations –