동일한 이름을 가진 두 개의 입력 요소를 갖는 것이 유효합니까?


답변:


61

예, 유효합니다

이것은 좋다

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

28
유효합니다. 서버 측 언어에 혼동을 일으키지 않습니다 (이름을 공유하는 필드 이름 지정 규칙을 사용하는 PHP도 해당 규칙을 사용하지 않는 여러 입력을 일관되고 예측 가능하게 처리합니다). JavaScript에 대해 혼동을 일으키지 않습니다 (요소를 컬렉션으로 표시하고 요소 중 하나를 무시 하지 않음 ). 자신이 무엇을하는지 모르고 코드를 작성하는 작성자에게 혼란을 줄 수도 있지만 사양에 따라 괜찮습니다.
Quentin

@David Dorward : 설명해 주셔서 감사합니다. 해당 부분을 제거했습니다.

14
이 게시물은 오해의 소지가 있습니다. 동일한 이름을 가진 입력은 동일한 형식이며 HTML 표준의 일부입니다. 예를 들어 체크 박스에 사용됩니다.
beldaz

1
단일 양식 내에 동일한 이름을 가진 여러 입력 (숨김 또는 기타)을 배치하는 것이 유효합니다. 또한 구조화 된 목록이나 연관 맵을 제출할 때 매우 유용하며 종종 해키 DIY 직렬화보다 훨씬 깔끔하고 덜 깨지기 쉽습니다.
candu

1
나는 이것이 오래된 게시물이라는 것을 알고 있지만 설명의 요점입니다. PHP는 요소가 다음과 같이 배열을 형성하고 있음을 알려 주어야합니다. <code> <input type = "hidden"name = "url []"value = ....... </ code> 그렇지 않은 경우 이렇게하면 php는 마지막 필드의 마지막 값을 가져 와서 "url"키에 대한 양식 배열에 연결합니다.
Mark C.

12

예.

또한 라디오 버튼 그룹을 다루는 경우 필수적입니다.


바로 그거죠. 또는 체크 박스를 사용하여 "url []"끝에 []를 입력하면 선택할 배열이 생성됩니다.
Kerry Jones

2
@Kerry — 그것은 PHPism입니다. 대부분의 양식 처리 라이브러리는 컨트롤 그룹에 대한 특별한 이름이 없어서 매우 기쁩니다.
Quentin

8

"이것은 좋지 않습니다"는 내가 아는 모든 브라우저에서 올바르게 구문 분석됩니다. 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을 이스케이프하여 여러 줄 문자열을 만드는 것도 아닙니다.


6

예-각각은 각각의 양식 만 제출합니다.

동일한 양식에있는 경우 하나가 다른 하나를 무시하고 유효하지 않습니다.

편집 : Mahmoodvcs가 지적한대로 재정의는 HTML 자체에 내재되어 있지 않은 일부 언어 (예 : PHP)에서만 발생합니다.


12
당신은 잘못. 같은 이름의 입력이 여러 개있는 경우 하나가 다른 입력을 대체 하지 않습니다 . 모든 입력은 html로 표시되는 순서대로 요청 본문에 추가됩니다. 그리고 그것은 유효입니다 : HTML 양식에 같은 이름의 여러 숨겨진 제어 요소
Mahmoodvcs

5
@Mahmoodvcs : 이것은 엄격히 사실이 아닙니다. 양식이 PHP 서비스에 게시되면 마지막 값이 우선합니다. 이름에 여러 값을 지정하려면 각 이름이 '[]'로 끝나야합니다.
Jeff Lowery 2015 년

6
여기서는 PHP가 아닌 HTML에 대해 이야기하고 있습니다.
Mahmoodvcs 2015 년

2
@yardpenalty-귀하의 질문을 이해하지 못합니다 (Jeff가 응답할지 확신 할 수 없음).하지만 PHP의 능력에 의문을 제기하는 경우 이것은 확실히 사실입니다 (적어도 PHP7 이전에는-변경되었는지 확인하지 않았습니다. 아직)
Kerry Jones

알아 내서 죄송합니다. php를 사용하여 처리하려면 이름 배열을 만들어야합니다. 나는 라디오 버튼이 같은 이름이나 무언가를 필요로하는 것이 부트 스트랩이라고 생각합니다. 어쨌든, 당신은 할 수 있습니다.
yardpenalty.com 2011


2

A) 제출 양식 시간이 다르기 때문에 첫 번째 예는 괜찮습니다.

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

B) 두 번째 예도 괜찮지 만 표준 코딩 방법은 아닙니다.

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

Java 코드 2는 두 값을 모두 추출합니다.

Map<String,String[]> parmMap = requestObj.getParameterMap();   
String input1 = parmMap.get("url")[0];   
String input2 = parmMap.get("url")[1];
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.