2010-10-14 14 views
7

Por lo que yo sé que hay dos maneras de obtener el valor de un cuadro de texto o bienJavascript nombre vs ID

document.formName.textboxName.value; 

o

document.getElementbyId('textboxId').value; 

Según entiendo usando el nombre del formulario significaría tengo menos código para escribir, ya que el nombre se puede usar para publicar datos y obtener el valor (además de usar ajax). Como si solo publicara usando un formulario estándar, ¿usaría name para publicar pero no puedo usar id?

p. Ej. en php me gustaría utilizar

$_POST['texboxName']; 

Si yo donde tener y ID en el cuadro de texto no puedo obtener el valor con php?

¿Cuál es la forma estándar recomendada de hacerlo, y está utilizando el navegador name? Enlaces si es posible, por favor, gracias.

Respuesta

12

La última guía en esto es el HTML specification.

cosas que se destacan por ahí:

  • id es válida para cualquier elemento HTML, mientras que name sólo se aplica a unos pocos elegidos (a, input, textarea y tal vez algunos otros).
  • Un elemento input (y textarea) requierename para establecerse si desea que se envíe.
+0

Lo suficientemente bueno para mí, gracias! :) – Elliott

+0

@Vilx - Soy consciente de que esto es un poco viejo, pero me preguntaba qué quiere decir con "compartir el mismo espacio de nombres" – PeanutsMonkey

+0

@ PeanutsMonkey - Gracias por señalarme esto. He estado equivocado El elemento de compartir espacio de nombre es [solo válido para elementos de anclaje] (http://www.w3.org/TR/1999/REC-html401-19991224/struct/links.html#anchors-with-id). El enlace lo explica mejor, pero en pocas palabras, cuando se utiliza '#' en la URL para saltar a un anclaje específico, examina los atributos 'id' y' name' para determinar a qué anclaje desplazarse. Si hubiera dos anclas diferentes donde el 'id' de uno fuera igual al 'nombre' del otro, el navegador se confundiría. Entonces la especificación lo hace inválido. –

1

Me suelen utilizar ambos. Como mencionó, name es útil para usar los datos a través de JavaScript y también una vez que se ha enviado. Siéntase libre de usar caracteres adicionales en el name según sea necesario: tiendo a usar [] s en mi nombre cuando la entrada se utilizará en una matriz del lado del servidor.

El atributo id se puede utilizar para acceder al elemento a través de JS/DOM. También se usa por el atributo <label>for. Si hace esto con casillas de verificación, por ejemplo, al hacer clic en la etiqueta se verificará la casilla. Eso es una gran ventaja para la usabilidad.

1

Considero que es una buena práctica tener un nombre y id para cada elemento del formulario. La razón es que si desea agregar etiquetas o estilo a través de hojas de cálculo (lo que debería estar haciendo), entonces tiene sentido tener ambas.

En cuanto a acceder a ella con javascript: la mejor manera sería ir con la identificación del elemento, porque si cambia el nombre de la forma todo se rompe. Esto no ocurre cuando usas el id.

+1

Sin embargo, la mayoría de las actividades de JavaScript relacionadas con un formulario se inician desde el formulario (desde los eventos de botón y campo o desde el evento onsubmit del formulario mismo) así que usar 'this.form' o' this' del llamante no tiene ambigüedad . Tenga en cuenta, también, que un "campo" puede involucrar más de un elemento, por lo que a menudo es necesario verificar los valores por nombre y no por identificación (botones de opción y casillas de verificación). –

1

Prefiero usar identificaciones, ya que la "función" (es decir, lo que está tratando de lograr) de su código no está relacionada en la semántica. Para mí, .GetElementById ('myid') se destaca más, y es más legible que simplemente tener "myid" disperso entre el código. Además, puedes cambiar el nombre de los elementos más fácilmente. ¡Ese es mi valor de 2p!