2009-11-28 23 views
5

He notado una gran cantidad de sitios web con formularios que contienen campos de entrada cuyo atributo "nombre" se especifica incluso si no se utiliza con fines de diseño o creación de scripts.¿Es redundante utilizar el atributo "nombre" para los campos de entrada en el desarrollo web moderno?

Además, según the official document acerca de la forma en el documento HTML ...

name = cdata [IC] nombres Este atributo el elemento de modo que puede ser denominado a partir de hojas de estilo o guiones. Nota. Este atributo se ha incluido para la compatibilidad con versiones anteriores . Las aplicaciones deben usar el atributo id para identificar elementos.

Por lo tanto, mi pregunta es: ¿este atributo se debe usar solo para el estilo y la secuencia de comandos?

¡Gracias de antemano!


EDIT: En particular, se podría evitar el uso de este atributo con los campos de entrada de tipo "texto" (cuando no haya fines de peinado o de scripting)?


EDIT 2: Por lo tanto, casi se ha confirmado lo que había pensado: el atributo "nombre" dejará de estar disponible en otras especificaciones de HTML/estándares !!! ??? Todavía está "vivo", solo for backwards compatibility ... en algunos casos se puede evitar, pero todavía hay algunos casos (como el botón de radio) donde es necesario.

+3

Su cita es para el elemento FORM, no los elementos de entrada. Aún deberá dar un nombre a los elementos de entrada para que su código del lado del servidor lea correctamente la información enviada. –

+0

¡Lo siento, tienes razón! Sobre el proceso de envío estoy de acuerdo, pero mi pregunta es más general, de hecho, como se subraya a partir de las respuestas a continuación, hay casos en los que este atributo es innecesario. Sin embargo gracias! – BitDrink

Respuesta

3

El atributo name es la notación para hacer referencia a elementos específicos dentro del alcance de una página web a través de no-DOM Javascript:

document.forms['your_form'].elements['aa'] 

El atributo id para el elemento se debe establecer con el mismo valor para la siguiente a trabajar:

document.getElementById('aa') 

Mi entendimiento es que cuando Netscape creó Javascript, se utiliza el atributo name. Sin embargo, la especificación HTML decidió ir con id, pero mantuvo name para compatibilidad con versiones anteriores. IME, utilizando el atributo name era necesario para la compatibilidad con Internet Explorer 6 porque el motor de JavaScript en IE no leería el atributo id; solo se definió el name.

... podría evitarse el uso de este atributo con campos de entrada de tipo "texto" (cuando no hay ningún estilo o scripting)?

Si usted no tiene ningún JavaScript unido a los campos de texto, sí - que serían innecesarios.

+0

¡Gracias! Así que has confirmado lo que había pensado: el atributo "nombre" en el futuro probablemente se desaprobará. – BitDrink

+1

@BitDrink: una vez que nos deshacemos de Internet Explorer 6, la desaprobación debería ser realidad. –

+0

:-D ¡Sí, tienes toda la razón! – BitDrink

0

Los navegadores anteriores de IIRC usan nombre en lugar de ID, por eso normalmente está incluido.

+0

Gracias por su respuesta! – BitDrink

2

Existen diferencias entre los atributos id y name. Una identificación es aplicable a cualquier elemento en el documento HTML, mientras que un nombre es relevante solo para los campos de entrada. El estándar requiere una identificación para ser única en una página (aunque no necesariamente se sigue en todas las páginas web). Sin embargo, diferentes elementos pueden tener el mismo nombre. Un caso particular viene a la mente es el botón de radio. Todos los botones de opción deben tener el mismo nombre y el valor del seleccionado se devolverá al formulario. Entonces puede ver que ese nombre todavía tiene importancia en el procesamiento de formularios HTML.

He visto en sistemas de generación de formularios HTML automáticos (como zope.formlib), que los atributos de id y nombre se generan automáticamente para diferentes tipos de widgets de entrada. Dichos sistemas automáticos de generación de formularios se encargan de todos los matices asociados con las diferencias en los atributos id y name. También hacen cosas como generar un elemento de entrada oculto para cada elemento de casilla de verificación. Entonces, siempre que sea posible, trato de usar algún tipo de mecanismo automático de generación de formularios HTML y dejar que se ocupe de los problemas involucrados.

+0

¡Gracias, el botón de radio es un buen ejemplo! Sin embargo, no estoy de acuerdo con la generación automática de código de marcado. – BitDrink

+0

@BitDrink Bueno, no estoy de acuerdo con la generación de HTML cuando es algo pequeño como un formulario, pero muchos sitios web usan secuencias de comandos del lado del servidor para generar grandes cantidades de HTML que posiblemente no podrían hacerse a mano, como los motores de búsqueda. También hay cosas como el [Google Web Toolkit] (https://developers.google.com/web-toolkit/), que va al punto de generar javascript automáticamente desde java. –

5

Yo creo que encontrará casi todos los sitios tendrán entradas con el atributo de nombre. No lo veo desaparecer pronto.

El atributo de nombre especifica un nombre para un elemento de entrada.

El atributo de nombre se utiliza para identificar datos del formulario después de que se haya presentado al servidor, o para hacer referencia de forma datos mediante el uso de JavaScript en el lado del cliente .

Nota: Solo los elementos de formulario con un atributo de nombre tendrán sus valores pasados ​​al enviar un formulario.

source

+0

¡Ha subrayado un buen punto! Sin embargo, mi pregunta surge después de que he visto algunos campos de entrada que contienen este atributo (y algunos otros) donde no es necesario ... ¡así que creo que esta es una mala práctica de desarrollo, una cuestión de redundancia! – BitDrink

+0

Depende, si la entrada está en un formulario y no desea/necesita enviar los datos, no use el atributo de nombre. Si la entrada está fuera de un formulario, no lo necesita en absoluto. Si va a estar en desuso? Realmente lo dudo, pero ya es un atributo opcional por lo que solo debe usarlo si lo desea (o si desea pasar datos al servidor). – mlouro

1

Ésta es una vieja pregunta, pero vale la pena señalar que muchos marcos JS modernas se basan en el atributo name. En particular, serialize función de jQuery:

Para el valor de un elemento de formulario que se incluye en la cadena serializada, el elemento debe tener un atributo de nombre.

En todo caso, name parece estar volviendo.

También vale la pena señalar que el atributo name es útil porque tiene un poco más de "alcance" que id. id debe ser único dentro de una página, pero el mismo name se puede usar varias veces. Esto lo hace útil cuando tiene varias formas en la misma página, o cuando se quiere hacer referencia a un grupo de casillas de verificación, etc.

Cuestiones relacionadas