¿Es válido html tener lo siguiente:
<form action="a">
<input.../>
<form action="b">
<input.../>
<input.../>
<input.../>
</form>
<input.../>
</form>
Entonces, cuando envías "b" solo obtienes los campos dentro del formulario interno. Cuando envía "a", obtiene todos los campos menos los que están dentro de "b".
Si no es posible, ¿qué soluciones para esta situación están disponibles?
html
web-standards
standards-compliance
allyourcode
fuente
fuente
Respuestas:
A. No es HTML ni XHTML válido
En la especificación oficial W3C XHTML, Sección B. "Prohibiciones de elementos", establece que:
http://www.w3.org/TR/xhtml1/#prohibitions
En cuanto a la especificación HTML 3.2 anterior , la sección sobre el elemento FORMS establece que:
B. La solución
Existen soluciones alternativas que utilizan JavaScript sin necesidad de anidar etiquetas de formulario.
"Cómo crear un formulario anidado". (a pesar del título, esto no son etiquetas de formulario anidadas, sino una solución alternativa de JavaScript).
Respuestas a esta pregunta de StackOverflow
Nota: Aunque se puede engañar a los Validadores del W3C para que pasen una página manipulando el DOM mediante secuencias de comandos, todavía no es HTML legal. El problema con el uso de tales enfoques es que el comportamiento de su código ahora no está garantizado en todos los navegadores. (ya que no es estándar)
fuente
En caso de que alguien encuentre esta publicación aquí, es una gran solución sin la necesidad de JS. Use dos botones de envío con diferentes atributos de nombre, verifique en el idioma de su servidor qué botón de envío se presionó porque solo uno de ellos se enviará al servidor.
El lado del servidor podría verse así si usa php:
fuente
HTML 4.xy HTML5 no permiten formularios anidados, pero HTML5 permitirá una solución alternativa con el atributo "formulario" ("propietario del formulario").
En cuanto a HTML 4.x puedes:
fuente
Como han dicho otros, no es HTML válido.
Parece que está haciendo esto para colocar las formas visualmente entre sí. Si ese es el caso, solo haga dos formas separadas y use CSS para colocarlas.
fuente
No, la especificación HTML establece que ningún
FORM
elemento debe contener otroFORM
elemento.fuente
Puede responder su propia pregunta muy fácilmente ingresando el código HTML en el Validador W3 . (Cuenta con un campo de entrada de texto, ni siquiera tendrá que poner su código en un servidor ...)
(Y no, no se validará).
fuente
¡más bien use un método javascript personalizado dentro del atributo de acción del formulario!
p.ej
fuente
Una posibilidad es tener un iframe dentro de la forma externa. El iframe contiene la forma interna. Asegúrese de utilizar la
<base target="_parent" />
etiqueta dentro de la etiqueta principal del iframe para que el formulario se comporte como parte de la página principal.fuente
no, ver w3c
fuente
No, no es valido. Pero una "solución" puede ser crear una ventana modal fuera del formulario "a" que contenga el formulario "b".
Se puede hacer fácilmente si está utilizando bootstrap o materializa css. Estoy haciendo esto para evitar usar iframe.
fuente
Una solución alternativa que no es JavaScript para anidar etiquetas de formulario:
Porque permites
al enviar "a", lo siguiente funcionaría, utilizando formularios web regulares sin trucos sofisticados de JavaScript:
Paso 1. Coloque cada formulario en su propia página web.
Paso 2. Inserta un iframe donde quieras que aparezca este subformulario.
Paso 3. Beneficio.
Traté de usar un sitio web de código de juegos para mostrar una demostración, pero muchos de ellos prohíben incrustar sus sitios web en iframes, incluso dentro de su propio dominio.
fuente
Si necesita su formulario para enviar / confirmar datos en una base de datos relacional 1: M, recomendaría crear un disparador de base de datos "después de insertar" en la tabla A que insertará los datos necesarios para la tabla B.
fuente
No, no es válido, pero puede engañar su posición de forma interna en el
HTML
con ayudaCSS
yjQuery
uso. Primero cree un contenedor div dentro de su formulario padre y luego, en cualquier otro lugar de la página, el div con su formulario hijo (interno):....
Dale a tu contenedor div algo de peso estable
Agradezca el truco de la posición "other_form" relativa al contenedor div.
PD: Tendrás que jugar con números para que se vea bien.
fuente