Con frecuencia me resulta deseoso hacer una tabla de formularios: un grupo de filas, cada fila es un formulario separado con sus propios campos y botón de envío. Por ejemplo, he aquí una aplicación tienda de animales ejemplo - imaginar se trata de una pantalla de pago que le da la opción de actualizar las cantidades y características de los animales que ha seleccionado y guardar los cambios antes de salir:HTML: ¿tabla de formas?
Pet Quantity Color Variety Update
snake 4 black rattle update
puppy 3 pink dalmatian update
me gustaría ser capaz de hacer esto usando HTML que se ve así:
<table>
<thead><tr><th>Pet</th> <th>Quantity</th> <th>Color</th> <th>Variety</th> <th>Update</th></tr></thead>
<tbody>
<tr>
<form>
<td>snake<input type="hidden" name="cartitem" value="55"></td>
<td><input name="count" value=4/></td>
<td><select name="color"></select></td>
<td><select name="variety"></select></td>
<td><input type="submit"></td>
</form>
</tr>
</tbody>
</table>
ésta es básicamente una mesa llena de formas, una forma por fila. Pulsar actualizar una vez le permite actualizar esa fila específica (este no es un ejemplo real, mis aplicaciones reales realmente requieren independencia de filas).
Pero esto no es HTML válido. De acuerdo con las especificaciones, un <form>
tiene que estar completamente dentro de un <td>
o completamente fuera de un <table>
. Este html no válido rompe las bibliotecas de JavaScript y es un gran problema.
Termino haciendo una tabla para contener encabezados de columna, y luego hacer una tabla por formulario. Pero esto requiere anchos de columna fijos para que las entradas estén alineadas en columnas ordenadas, lo cual es inferior a la media. ¿Cómo terminas lidiando con este problema? ¿Existe una solución obvia fácil que me falta? ¿Cómo hago una tabla de formularios?
¿Por qué no lo haces una gran forma alrededor de la mesa? –
No diría que el ancho de columna fijo es inferior a la media como tal. El uso de 'table-layout: fixed' le proporcionará anchos de columna fijos adecuados (pueden ser de diseño líquido, pero no cambiarán según el tamaño del contenido, por lo que se alinearán en varias tablas). El diseño de tabla fija también se procesa antes. – bobince