tag - title html attribute
¿Está bien tener múltiples formularios HTML con el mismo nombre? (4)
Con respecto a la especificación HTML 4.01, puede utilizar elementos de form
con el mismo atributo de name
, ya que no hay ningún requisito de exclusividad en ellos. Sin embargo, hacerlo derrota el propósito de tales atributos. Están diseñados para que sea más fácil referirse a los formularios en las secuencias de comandos del lado del cliente: si tiene <form name=foo>
, document.foo
refiere a ese formulario.
No está definido lo que sucede cuando se usa el mismo atributo de name
, pero lo que los navegadores parecen hacer es devolver una matriz. En su ejemplo, document.foo
sería una matriz de 3 elementos, siendo document.foo[0]
la primera forma. Pero esto no es útil, ya que (asumiendo que no hay otras formas en el documento) podría usar document.forms[0]
, con un significado bien definido.
El name
atributo en sí está desactualizado para los elementos del form
(pero no para los campos del formulario, donde sigue siendo esencial). La cláusula de especificación HTML 4.01 en el form
dice:
“Name = cdata [CI] Este atributo nombra el elemento para que pueda ser referido desde hojas de estilo o scripts. Nota. Este atributo se ha incluido para la compatibilidad con versiones anteriores. Las aplicaciones deben usar el atributo id
para identificar elementos ".
En los borradores de HTML5, incluso las reglas formales no permiten el uso del mismo atributo de name
. La cláusula HTML5 en el atributo de name
en el form
dice que su valor "debe ser único entre los elementos del form
en la colección de forms
en el que se encuentra, si corresponde". Esta es una formulación confusa, pero es más seguro suponer que debe ser única dentro de los elementos de un documento.
Tengo una razón válida para querer hacer esto, pero es una larga historia, así que me olvidé de intentar explicar por qué y solo pregunto si está bien hacerlo.
Tengo una página en la que necesito tener varios formularios con el mismo nombre, pero solo quiero que se envíe el formulario cuyo botón de envío se haga clic. Por ejemplo, lo siguiente podría estar en mi página:
<form name="input" action="" method="get">
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form>
text
<form name="input" action="" method="get">
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form>
text
<form name="input" action="" method="get">
Username: <input type="text" name="user" />
<input type="submit" value="Submit" />
</form>
¿Es esto aceptable?
Cuando el usuario haga clic en un botón de envío, solo ese formulario se tomará en acción. Aún así, debería ser mejor nombrarlos para que no estén confundidos :)
Sí, está permitido, solo los id
deben ser únicos. Sin embargo, no lo recomendaría, por qué incluso ponerse en una posición para confundirse en el camino.
El atributo de name
solo define cómo se representará cada elemento de campo de formulario cuando se envíe al servidor.
También está bien en HTML5. Solo el nombre debe ser único dentro del propio formulario.
Consulte la documentación: "El valor no debe ser la cadena vacía, y el valor debe ser único entre los elementos del formulario en la colección de formularios en que se encuentra, si corresponde".