2012-01-20 19 views
41

¿Cuál es el punto del atributo name en un formulario HTML? Por lo que puedo decir, no puede leer el nombre del formulario en el envío o hacer cualquier otra cosa con él. ¿Sirve un propósito?¿Qué sentido tiene el atributo `name` de las formas HTML?

+3

Me tomó un tiempo para darse cuenta de que sólo están preguntando sobre el atributo 'name' en una etiqueta de' '

, no' 'name' atributos en ' etiquetas dentro de un '' – mmcrae

Respuesta

43

En definitiva, y, probablemente, simplificando un poco: Se utiliza en lugar de id para los navegadores que no entienden document.getElementById.

En estos días no sirve para nada. Es un legado de los primeros días de las guerras de navegador antes del uso de name para describir cómo enviar valores de control cuando se envía un formulario y se resolvió id para identificar un elemento dentro de la página.

+3

Sí, una respuesta real. Gracias. No sabía que los navegadores no entendían 'document.getElementById' .. Creo que podemos omitir esos, ¿eh? –

+0

Sospechaba – Yarin

+2

Todavía tiene un propósito: 'type = radio' y' type = checkbox' requieren el atributo 'name' para compartir el nombre del control (es decir, el mismo grupo) [especificación W3] (http: // www.w3.org/TR/html401/interact/forms.html#control-name) – charles

10

De the spec:

El atributo representa el nombre del nameform 's dentro de la colección forms.

+0

interesante- nunca he tenido a distinguir formas en una colección anterior, tal vez este es el caso de uso real? – Yarin

+2

@Yarin - Puedes usar 'id' para eso. – Quentin

+0

@ Quentin-ok, este es otro caso de uso superfino aparentemente – Yarin

5

Una vez que asigne un nombre a un elemento, puede consultar ese elemento a través de document.name_of_element en todo su código. No funciona demasiado decir cuando se tiene múltiples campos del mismo nombre, pero sí permite atajos como:

<form name="myform" ...> 

document.myform.submit(); 

en lugar de

document.getElementsByName('myform')[0].submit(); 
+2

Sin embargo, podría hacer esto por ID, entonces, si ese es el único caso de uso, realmente no importa – Yarin

+0

@Yarin, ¿cómo puede hacer eso con 'id'? 'document.id' no funciona, a menos que agregue métodos prototipo para este propósito ... – vaxquis

1

Puede usar el atributo de nombre como un atributo de "información adicional", al igual que con una entrada oculta, pero esto mantiene la información adicional vinculada al formulario, lo que hace que sea un poco más fácil de leer/acceder.

+0

No hagas eso. Las entradas ocultas contienen datos que se enviarán al servidor. El atributo 'name' de un elemento de formulario no será. Si desea proporcionar datos adicionales exclusivamente para acceder al código del lado del cliente, los atributos 'data- *' se proporcionan expresamente para tal fin. – Quentin

0

Esto es lo MDN tiene que decir al respecto:

name
El nombre del formulario. En HTML 4, su uso está en desuso (en su lugar, se debe usar id). Debe ser único entre las formas en un documento y no sólo una cadena vacía en HTML 5.

(desde https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form#attr-name)

Me resulta un poco confuso que especifica que debe ser único, no vacío cadena en HTML 5 cuando estaba en desuso en HTML 4. (Supongo que ese requisito solo se aplica si el atributo name se especifica en absoluto?). Pero creo que es seguro decir que cualquier propósito que alguna vez sirvió ha sido reemplazado por el atributo id.

Cuestiones relacionadas