2010-12-23 9 views
10

¿Puedo poner una etiqueta <form> dentro de otra etiqueta <form>?¿Puedo anidar las etiquetas de formulario en otras etiquetas de formulario?

Por ejemplo:

<form> 
    <form> 
    </form> 
</form> 
+1

¿Quiere decir un elemento de formulario ;-) –

+0

ya que me refiero forma de etiqueta, gracias me dieron responder – Navruk

+0

posible duplicado de [¿Es válida para 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) –

Respuesta

17

No, están prohibidos formas anidadas.


Esto se expresa en el HTML 4.01 DTD como:

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

- http://www.w3.org/TR/html4/interact/forms.html#h-17.3

Esto significa un formulario tiene una etiqueta de inicio obligatoria, etiqueta de cierre obligatorio y puede contener cualquier cosa en% block o SCRIPT, excepto en otras FORMAS.


XML DTD no son tan expresivos como SGML DTD por lo que en XHTML esta regla sólo se especifica en el texto legible por humanos de la especificación:

formulario no debe contener otros elementos de formulario .

- http://www.w3.org/TR/xhtml1/#prohibitions


HTML 5 no es una aplicación SGML y no tiene una máquina de leer la descripción oficial de la lengua. También expresa esta regla en el texto:

modelo de contenido:

contenido dinámico, pero sin descendientes elemento de formulario.

- http://www.w3.org/TR/html5/forms.html#the-form-element

+0

Gracias por su respuesta. – Navruk

0

único, uso <fieldset> si desea dividir sus formas. Algunos navegadores pueden analizarlo (no lo probaron) pero de acuerdo con el estándar w3 no está permitido usar formularios dentro de otras formas.

+0

Gracias por su respuesta – Navruk

+0

Esto necesita alguna elaboración ... – Cerin

1

Los formularios anidados no están permitidos según la especificación (no estoy seguro de cuál sería el comportamiento al intentarlo, no lo he intentado).

Sin embargo, hay algunas discusiones interesantes sobre el tema en a previous question.

+0

Gracias por su respuesta – Navruk

1

No puede anidarlos, pero puede agrupar elementos ... hay un mecanismo específicamente para esto, the <fieldset> element, que se utiliza para agrupar controles/etiquetas ... y en HTML5 asociarlo a formularios específicos, deshabilitar contenidos, etc.

+0

Gracias por su respuesta – Navruk

0

Funciona bien con XHTML 1.0 Strict.

Incluso probé la validación pegando el siguiente en http://validator.w3.org/check.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <title>Markup Test</title> 
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" /> 
    </head> 
    <body> 
    <h1>Markup Test</h1> 
    <p> 
     This doc contains a form with a nested form and validates at 
     <a title="Validate using W3C Markup Validation Service" href="http://validator.w3.org/check?uri=referer"> 
     http://validator.w3.org/ 
     </a> 
    </p> 
    <form action="#"> 
     <div> 
     <form action="#"> 
     </form> 
     </div> 
    </form> 
    </body> 
</html> 

Sin embargo Quentin continuación es correcta: I probado y la forma anidada de apertura y etiquetas de cierre se ignoran. Los elementos de entrada de formulario que aparecen antes, dentro y después de las etiquetas de formulario secundarias se tratan como miembros del formulario principal, incluidos los botones de envío. Las referencias de JavaScript al this.form desde el formulario hijo hacen referencia al formulario principal. Si le das al niño un ID y lo recuperas a través del getElementById, obtienes un elemento pero .submit() no hace nada. Es básicamente una forma (el padre) con etiquetas de basura en ella.

+0

Es * válido * pero ** no permitido **. Las DTD XML no son tan expresivas como las DTD SGML, por lo que no se puede expresar "No se formó anidado" de forma que el validador pueda comprender. Consulte [Prohibiciones de elemento] (http://www.w3.org/TR/xhtml1/#prohibitions): * el formulario no debe contener otros elementos de formulario * – Quentin

-1

Directamente dentro de los formularios no están permitidos. Todos los javascript no funcionarán y el comportamiento previsto no estará allí.

Sin embargo, puede intentar esto:

<form name ="1st form"> 
<...> 
<div> <form id="dummy"></form></div> 
<...> 
<form name = "2nd form"> 
</form> 
<...> 
</form> 

Usted tendrá que crear una forma ficticia entre las 2 formas que la intención de utilizar. 1 nota de precaución, 1st Form y la forma ficticia necesitarán tener algunas etiquetas entre ellos. de lo contrario, esto no funcionará.

Cuestiones relacionadas