Sé que xhtml no admite etiquetas de formulario anidado y ya he leído otras respuestas
aquí en stackoverflow con respecto a este tema, pero todavía no he encontrado una solución elegante al problema.¿Cómo se supera la limitación de anidamiento de formulario html?
Algunos dicen que no lo necesitas y que no pueden pensar en un escenario si fuera necesario. Bueno, personalmente no puedo pensar en un escenario que NO LO HAYA necesitado.
Veamos un ejemplo muy sencillo:
Usted está haciendo una aplicación de blog y que tiene un formulario con algunos campos de la creación de un nuevo puesto y una barra de herramientas con "acciones" como "Guardar", "Borrar", "Cancelar".
<form
action="/post/dispatch/too_bad_the_action_url_is_in_the_form_tag_even_though_conceptually_every_submit_button_inside_it_may_need_to_post_to_a_diffent_distinct_url"
method="post">
<input type="text" name="foo" /> <!-- several of those here -->
<div id="toolbar">
<input type="submit" name="save" value="Save" />
<input type="submit" name="delete" value="Delete" />
<a href="/home/index">Cancel</a>
</div>
</form>
Nuestro objetivo es escribir la forma de una manera que no requiere JavaScript, formulario HTML simplemente vieja y botones de envío.
Dado que la url de acción se define en la etiqueta de formulario y no en cada botón de envío individual, nuestra única opción es publicar en una url genérica y luego iniciar "si ... entonces ... más" para determinar el nombre del botón que se envió. No es muy elegante, sino nuestra única opción, ya que no queremos confiar en javascript.
El único problema es que al presionar "Eliminar", se enviarán TODOS los campos de formulario en el servidor, aunque lo único necesario para esta acción es una entrada oculta con la identificación posterior. No es gran cosa en este pequeño ejemplo, pero tengo formularios con cientos (por así decirlo) de campos y pestañas en mis aplicaciones LOB que (debido a los requisitos) tienen que enviar todo de una vez y, en cualquier caso, esto parece muy ineficiente y un desperdicio Si el anidamiento de formularios fuera compatible, al menos podría envolver el botón de envío "Eliminar" dentro de su propio formulario con solo el campo de identificación posterior.
Puede decir "Simplemente implemente el" Eliminar "como un enlace en lugar de enviar". Esto sería incorrecto en muchos niveles, pero lo más importante es que las acciones de efectos secundarios como "Eliminar" aquí nunca deberían ser una solicitud GET.
Así que mi pregunta (particularmente a aquellos que dicen que no han necesitado anidar el formulario) es ¿Qué HACES? ¿Hay alguna solución elegante que me falta o la conclusión es realmente "O requiere Javascript o enviar todo"?
Es curioso, pero XHTML permite anidar de forma indirecta según una nota interesante http://anderwald.info/internet/nesting-form-tags-in-xhtml/ - (X) HTML no permite el anidamiento de formularios como "formulario> forma" , pero permite "form> fieldset> form", el validador W3 dice que es válido, pero los navegadores tienen errores con dicho anidamiento. – Nishi
posible duplicado de [¿Es válido tener un formulario html dentro de otro formulario html?] (Http://stackoverflow.com/questions/555928/is-it-valid-to-have-a-html-form-inside- another-html-form) –