Допустимо ли иметь два входных элемента с одинаковым именем?


т. е.:

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

и

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

это разрешено и допустимо?

6 55

6 ответов:

да действует

это хорошо

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

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

Это тоже прекрасно и, как правило, интерпретируется как массив значений, например,{url: [1, 2]} в зависимости от того, что ваш сервер делает. В кодировке URL это будет выглядеть как url=1&url=2.

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

да.

более того, это важно, если вы имеете дело с группами переключателей.

да -- каждый будет представлять только свои соответствующие формы.

Если у вас есть их в той же форме, один будет переопределять другой, и это недопустимо.

" Это не хорошо " правильно анализирует в каждом браузере, о котором я знаю; если два url-адреса появляются в строке с кодировкой url, она будет рассматриваться как массив. Попробуйте это в JQuery:

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

вы получаете: "url=1&url=2"

хорошо написанный синтаксический анализатор строки запроса вернет структуру json следующим образом:

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

это строго спецификаций? Нет, но ни один из них не создает многострочную строку, избегая EOL с обратной косой чертой, как я сделал выше.

чтобы проверить, действительно ли это или нет, создайте страницу и протестируйте ее на W3C здесь:

http://validator.w3.org/

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];