2012-06-20 2 views
14

나는 이것을하고 싶어하는 타당한 이유가 있지만 긴 이야기이기 때문에 이유를 설명하는 것을 잊어 버리고 그냥 할 수 있는지 물어 봅니다.같은 이름의 HTML 폼을 여러 개 사용할 수 있습니까?

동일한 이름으로 여러 양식이 필요한 페이지가 있는데, 제출 버튼이 클릭 된 양식 만 필요합니다. 예를 들어 내 페이지에 다음과 같이 표시 될 수 있습니다.

<form name="input" action="" method="get"> 
Username: <input type="text" name="user" /> 
<input type="submit" value="Submit" /> 
</form> 

text 

<form name="input" action="" method="get"> 
Username: <input type="text" name="user" /> 
<input type="submit" value="Submit" /> 
</form> 

text 

<form name="input" action="" method="get"> 
Username: <input type="text" name="user" /> 
<input type="submit" value="Submit" /> 
</form> 

이게 맞습니까?

+0

http://validator.w3.org – BalusC

+0

http://www.onlinewebcheck.com은 HTML5 문서에서 중복 된 양식 이름 오류를 감지합니다. –

+0

왜 양식 이름을 사용합니까? http://stackoverflow.com/questions/ 8946320/whats-the-point-of-html-forms-name-attribute –

답변

15

HTML 4.01 규격과 관련하여 고유 한 요구 사항이 없으므로 속성이있는 form 요소를 사용할 수 있습니다. 그러나 그러한 속성의 목적을 상실합니다. 클라이언트 측 스크립트에서 양식을 쉽게 참조 할 수 있도록하기위한 것입니다. <form name=foo> 인 경우 document.foo은 해당 양식을 나타냅니다.

동일한 name 속성이 사용되면 어떻게되는지는 정의되지 않지만 브라우저가하는 것처럼 보이는 것은 배열을 반환하는 것입니다. 귀하의 예에서 document.foo은 3 요소 배열이고 document.foo[0]은 첫 번째 양식입니다. 그러나 이것은 유용하지 않습니다. 왜냐하면 (문서에 다른 형식이 없다고 가정하면) 여러분은 document.forms[0]을 잘 정의 된 의미로 사용할 수 있기 때문입니다.

name 속성 자체는 form 요소로 구식이지만 양식 필드에는 필수 요소입니다. HTML 4.01 spec clause on form는 말한다 :

"name = CDATA [CI] 이 속성 이름이 스타일 시트 또는 스크립트에서 참조 할 수 있도록 요소입니다. 노트. 이 속성은 이전 버전과의 호환성을 위해 포함되었습니다. 응용 프로그램은 요소를 식별하기 위해 id 특성을 사용해야합니다. "

HTML5 초안에서 공식 규칙조차도 동일한 name 특성을 사용할 수 없습니다. HTML5 clause on the name attribute on form은 "그 값이있는 경우 forms 컬렉션의 form 요소 중에서 고유해야합니다"라고 말합니다. 이것은 혼란스러운 공식이지만, 문서의 form 요소 내에서 고유해야한다고 가정하는 것이 가장 안전합니다.

+0

여러 일치하는 이름의 경우 document.foo에 대한 비트가 정의되지 않은 경우 섹션 3.1.4 DOM 트리 접근 자 http://dev.w3.org/html5/spec/dom.html#dom-document -namedItem - 3.1.4의 끝에서 무엇을 정의합니까? – Alohci

+0

@Alohci, 현재 사양에서는 정의되지 않았습니다. HTML5 초안은 이에 대한 메커니즘을 정의하지만 고유성 요구 사항을 부과합니다. –

+0

그래, 좋은 지적이야. 별도의 HTML 4 및 HTML5 모드가 없으므로 HTML 4와 HTML 5, 사용자 에이전트 *의 논의는 때로는 매우 복잡해집니다. – Alohci

10

예, 허용됩니다. id은 고유해야합니다. 그러나 나는 그것을 추천하지 않을 것입니다. 왜 심지어 길 아래에서 혼란스러워하는 입장에 처해야합니다.

name 속성은 각 양식 필드 요소가 서버로 전송 될 때 표시되는 것을 정의합니다.

+5

'form' 요소의'name' 속성은 서버로 보내지는 데이터에 영향을 미치지 않습니다.양식 필드의'name' 속성과 혼동했을 수 있습니다. –

0

사용자가 제출 버튼을 클릭하면 해당 양식 만 실행됩니다. 그래도 혼란스럽지 않도록 이름을 지정하는 것이 좋습니다.

1

HTML5에서도 괜찮습니다. 이름은 양식 자체 내에서 고유해야합니다.

docs : "값은 빈 문자열이 아니어야하며 값은있는 경우 양식 모음의 양식 요소 중에서 고유해야합니다."

+1

이것은 오도 할 수 있습니다. HTML5에서 [W3C 요구] (https://www.w3.org/TR/html5/forms.html#attr-form-name) ** 양식의 ** 이름은 양식 모음에서 고유해야합니다. , 만약에 어떠한. 그러나 형식의 요소 인 'name'은 \ __ charset \ __를 제외한 [비어 있지 않은 모든 문자열] (https://www.w3.org/TR/html5/forms.html#attr-fe-name)이 될 수 있습니다 및 _isindex_. – Qdeep

관련 문제