Если вы хотите «редактируемую сетку» то есть таблицы, как структура, которая позволяет сделать любого из строк формы, использование 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>
Проблема с обертыванием всей таблицы в ФОРМЕ, что любые и все элементы формы будут отправляться на представить (возможно, что желательно, но, вероятно, нет). Этот метод позволяет вам определить форму для каждой «строки» и отправлять только эту строку данных для отправки.
Проблема с упаковкой тега FORM вокруг тега TR (или 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. Большинство из них это делают.
Обратите внимание, что вы также можете имитировать THEAD, TBODY, TFOOT, обернув свои группы строк в другой DIV с display: table-header-group
, table-row-group
и table-footer-group
соответственно.
ПРИМЕЧАНИЕ: Единственное, что вы не можете сделать с этим методом, это colspan.
Заканчивать эту иллюстрацию: http://jsfiddle.net/ZRQPP/
http://www.hotdesign.com/seybold/ – Stephen
Почему бы не избавиться от форм и не оформить таблицу. –
Как обсуждалось в ответах, кажется, что лучшей альтернативой является использование какого-то AJAX для этого. Следующий вопрос содержит набор плагинов сетки jQuery, которые позволят вам делать то, что вы хотите; надеюсь, вы найдете это полезным. http://stackoverflow.com/questions/159025/jquery-grid-recommendations –