Dołączam niektóre formularze do tabeli HTML, aby dodać nowe wiersze i zaktualizować bieżące wiersze. Problem, który otrzymuję, polega na tym, że kiedy sprawdzam formularze w moich narzędziach programistycznych, widzę, że elementy formularza są zamykane natychmiast po otwarciu (dane wejściowe itp. Nie są zawarte w formularzu).
W związku z tym przesłanie formularza nie obejmuje pól.
Wiersz tabeli i dane wejściowe są następujące:
<tr>
<form method="post" action="">
<td>
<input type="text" name="job_num">
</td>
<td>
<input type="text" name="desc">
</td>
</form>
</tr>
Każda pomoc byłaby świetna, dziękuję.
html
firebug
html-table
forms
Alex
źródło
źródło
<form>
nie można go włożyć do środka<tr>
.<tr>
.Odpowiedzi:
Forma jest niedozwolone się element podrzędne
table
,tbody
lubtr
. Próba umieszczenia jednego z nich spowoduje, że przeglądarka przeniesie do niego formularz pojawi się za tabelą (pozostawiając zawartość - wiersze tabeli, komórki tabeli, dane wejściowe itp. - z tyłu).Możesz mieć cały stół w formularzu. Możesz mieć formularz w komórce tabeli. Nie możesz mieć części tabeli w formularzu.
Użyj jednego formularza wokół całego stołu. Następnie użyj klikniętego przycisku Prześlij, aby określić, który wiersz do przetworzenia (aby był szybki) lub przetworzyć każdy wiersz (zezwalając na zbiorcze aktualizacje).
HTML 5 wprowadza ten
form
atrybut . Pozwala to na dostarczenie jednego formularza na wiersz poza tabelą, a następnie powiązanie całej kontroli formularza w danym wierszu z jedną z tych formularzy przy użyciu jegoid
.źródło
<form>
wewnątrz<table>
w normach?Użyj atrybutu „formularz” , jeśli chcesz zapisać znaczniki:
(* Pola formularza poza znacznikiem <form>)
Zobacz także pierwsze 2 komentarze
źródło
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
, idisplay: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:
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)
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
itable-footer-group
odpowiednio.UWAGA: Jedyne, czego nie można zrobić z tą metodą, to colspan.
Sprawdź tę ilustrację: http://jsfiddle.net/ZRQPP/
źródło