Forma dentro de una forma, ¿está bien? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

Si podemos tener una forma dentro de otra forma?. Hay algún problema con eso.

Author: AbsoluteƵERØ, 2010-08-07

9 answers

Aunque puede tener varios elementos <form> en una página HTML, no puede anidarlos.

 188
Author: Oded,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-07 11:25:17

El anidamiento de formularios se puede lograr con el nuevo atributo de formulario del elemento de entrada HTML5. Aunque no anidamos las formas estructuralmente, las entradas se evalúan como están en su propia forma. En mis pruebas, 3 navegadores principales soportan esto excepto IE (IE11). La limitación del anidamiento de formularios fue un gran obstáculo para el diseño de la interfaz de usuario HTML.

Aquí hay un código de ejemplo, al hacer clic en el botón Guardar debería ver "2 3 éxito" (Original http://www.impressivewebs.com/html5-form-attribute/):

<form id="saveForm" action="/post/dispatch/save" method="post"></form>
<form id="deleteForm" action="/post/dispatch/delete" method="post"></form>

<div id="toolbar">
    <input type="text" name="foo" form="saveForm" />
    <input type="hidden" value="some_id" form="deleteForm" />
    <input type="text" name="foo2" id="foo2" form="saveForm" value="success" />

    <input type="submit" name="save" value="Save" form="saveForm" onclick="alert(document.getElementById('deleteForm').elements.length + ' ' + document.getElementById('saveForm').elements.length + ' ' + document.getElementById('saveForm').elements['foo2'].value);return false;" />
    <input type="submit" name="delete" value="Delete" form="deleteForm" />
    <a href="/home/index">Cancel</a>
</div>
 78
Author: ilevent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-20 09:27:45

No. HTML prohíbe explícitamente las formas anidadas.

Del proyecto HTML 5 :

Modelo de contenido: Contenido de flujo, pero sin descendientes de elementos de formulario.

De la Recomendación HTML 4.01 :

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form -->

(Observe la sección - (FORMULARIO)).

 75
Author: Quentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-07 11:24:50

Las formas anidadas no son soportadas y no son parte del estándar w3c ( como muchos de ustedes han dicho ).

Sin embargo, HTML5 agrega soporte para entradas que no tienen que ser descendientes de ningún formulario, pero que se pueden enviar en varios formularios, utilizando el atributo "form". Esto no permite exactamente las formas anidadas, pero mediante el uso de este método, puede simular las formas anidadas.

El valor del atributo" form " debe ser id del formulario, o en caso de múltiples formularios, id de formulario separados con espacio.

Puedes leer más aquí

 9
Author: user3007766,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-19 07:30:37

Si tiene un formulario maestro y se ve obligado a tener un "formulario con un formulario", esto es lo que puede hacer... en mi caso, tenía un enlace en globalHeader y quería realizar una publicación cuando se hizo clic:

Formulario de ejemplo publicar con el botón de enlace enviar:

En lugar de una forma... envuelva su entrada en un div:

 <div id="gap_form"><input type="hidden" name="PostVar"/><a id="myLink" href="javascript:Form2.submit()">A Link</a></div>

Archivo Js:

$(document).ready(function () {
(function () {
    $('#gap_form').wrap('<form id="Form2" action="http://sitetopostto.com/postpage" method="post" target="_blank"></form>');
})();});

Esto envuelva todo dentro del div "gap_form" dentro de un formulario sobre la marcha y el enlace enviar ese formulario. Tengo este ejemplo exacto trabajando en una página ahora... (En mi ejemplo...Podrías lograr lo mismo redirigiendo a una nueva página y enviando el formulario en esa página... pero esto me gusta más)

 8
Author: Ben Call,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-01 15:34:01

Sí lo hay. Está mal. No funcionará porque está mal. La mayoría de los navegadores solo verán un formulario.

Http://www.w3.org/MarkUp/html3/forms.html

 4
Author: AlexanderMP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-07 11:24:02

Otra solución sería iniciar una ventana modal que contenga su propia forma

 4
Author: manuchap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-28 11:03:32

No es válido XHTML tener que tener formularios anidados. Sin embargo, puede usar varios botones de envío y usar un script de servidor para ejecutar diferentes códigos dependiendo del botón en el que los usuarios hayan hecho clic.

 3
Author: Martin LeBlanc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-08-07 13:15:10

No, no podemos anidar formas dentro de otra forma como esta

<form name='form1'>
      <form name='form2'>
            //some code here
      </form>
</form>

Funcionará en algunos casos, pero no se recomienda para plataformas universales. Puedes usar muchos botones de ENVÍO dentro de un solo formulario, pero no puedes administrar un formulario anidado apropiadamente.

 3
Author: Gautam3164,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-24 11:38:31