2010-05-25 23 views
51

es decir .:¿Es válido tener dos elementos de entrada con el mismo nombre?

<form 1> 
<input type="hidden" name="url" value="1"> 
</form 1> 

y

<form 2> 
<input type="hidden" name="url" value="2"> 
</form 2> 

Es esto permitido y válida?

+0

duplicado posible de [formulario HTML con múltiples elementos de control oculto del mismo nombre] (http://stackoverflow.com/questions/452066/html-form-with-multiple-hidden-control-elements-of -el mismo nombre) –

Respuesta

32

Sí, en su caso, es válido. Considere esto:

Esto es bueno

<form name="form1"> 
    <input type="hidden" name="url" value="1"> 
</form> 

<form name="form2"> 
    <input type="hidden" name="url" value="2"> 
</form> 

esto no es bueno

<form name="form1"> 
    <input type="hidden" name="url" value="1"> 
    <input type="hidden" name="url" value="2"> 
</form> 
+8

¿por qué el voto hacia abajo? –

+20

Es válido. No creará confusión para el lenguaje del lado del servidor (incluso PHP, con sus convenciones para nombrar campos que comparten un nombre, manejará de manera consistente y predecible múltiples entradas que no usan esa convención). No creará confusión para JavaScript (que presentará los elementos como una colección y ** not ** ignorará uno de ellos). Es/podría/crear confusión para los autores que escriben código sin saber lo que están haciendo, pero está bien por la especificación. – Quentin

+0

@David Dorward: Gracias por explicar eso, eliminé esa parte. –

9

Sí.

Más, es esencial si se trata de grupos de botones de opción.

+0

Exactamente. O con casillas de verificación, en cuyo caso puede poner [] al final "url []" y crea una matriz para ser recogido. –

+2

@Kerry - Eso es un PHPismo. La mayoría de las bibliotecas de manejo de formularios están felices de no tener nombres especiales para grupos de controles. – Quentin

+0

Ah, es bueno saberlo. –

8

Sí, cada una solo se enviará con sus respectivos formularios.

Si los tiene de la misma forma, uno sobrescribirá al otro y no es válido.

+10

Estás equivocado. Si tiene varias entradas con el mismo nombre, una * no * anulará la otra. Todas las entradas se agregarán al cuerpo de la solicitud en el orden en que aparecen en html. Y es válido: [Formulario HTML con múltiples elementos de control ocultos del mismo nombre] (http://stackoverflow.com/questions/452066/html-form-with-multiple-hidden-control-elements-of-the-same- nombre) – Mahmoodvcs

+2

@Mahmoodvcs: Esto no es estrictamente cierto. Si el formulario se publica en un servicio PHP, entonces el último valor gana. Si desea asignar múltiples valores a un nombre, cada nombre debe terminar en '[]'. –

+4

Estamos hablando de HTML aquí, no de PHP. – Mahmoodvcs

2

Para probar si es válido o no, creat que la página y la prueba en el W3C aquí:

http://validator.w3.org/

+0

Y espero que el validador no tenga errores :-) –

6

"Esto no es bueno" analiza correctamente en cada navegador que conozco; si aparecen dos url en la cadena codificada de url, se tratará como una matriz. Pruebe esto en jQuery:

$('<form name="form1">\ 
    <input type="hidden" name="url" value="1">\ 
    <input type="hidden" name="url" value="2">\ 
</form>').serialize() 

y obtendrá: "url=1&url=2"

una cadena de consulta analizador bien escrito volverá una estructura JSON como esto:

{"url":["1", "2"]} 

Es estrictamente las especificaciones? No, pero tampoco está creando una cadena de varias líneas escapando de la EOL con una barra invertida, como hice anteriormente.

1
A) 

< form 1> 
< input type="hidden" name="url" value="1"> 
< /form 1> 

and 

< form 2> 
< input type="hidden" name="url" value="2"> 
< /form 2> 

is Okay,beacuse forms submiting time will be different 


B) 

< form 1> 
< input type="hidden" name="url" value="1"> 
< input type="hidden" name="url" value="2"> 
< /form 1> 
is also okay, but not standard coding practice 

JAVA Code two extract both values :: 

Map<String,String[]> parmMap = requestObj.getParameterMap(); 
String input1 = parmMap.get("url")[0]; 
String input2 = parmMap.get("url")[1]; 
Cuestiones relacionadas