2011-03-25 4 views
8

는 그냥 http://w3fools.com/#html_forms에서 다음을 읽어입력 태그가 양식 태그 내에서 직접 허용되지 않는 이유는 무엇입니까?

비 블록 수준 요소 (예 : <input> 등) HTML5까지 <form> 태그 내부에 직접 사용할 수 없습니다.

나는이 라인을 따라 들어 본 적이 전혀 없었으며, 내가 본 모든 기본 HTML 튜토리얼은 입력 태그를 직접 form 태그 안에 넣는 것으로 충분하다. 그래서 제 질문은 세 부분으로되어 있습니다 :

  • 위의 진술은 합법적입니까?
  • 왜 이런 경우입니까? (이 규칙을 작성하여 특정 문제를 방지하려고 시도한 HTML 스펙 작성자입니까?)
  • 입력이있는 양식을 구성하는 가장 좋은 방법은 무엇입니까? (div 나 테이블을 form 태그 안에 직접 작성해야만합니까?)
+4

그렇기 때문에 FORM 요소의 직접 하위 요소는 블록 수준 요소 여야합니다. http://vidasp.net/HTML-structure-diagram.html –

답변

8

표준 pedantics입니다. HTML 4.01에서 definition for <form>이 단지 블록 요소 또는 <script>을 포함 할 수 있음을 지정합니다

  • 성명은 표준을 끝까지 합법적이다. 모든 브라우저가 허용하는 한, 괜찮습니다.
  • 나는 <form>이 레이아웃 태그가 아닐 것이라고 생각할 수 있으며, 모든 인라인 요소가 블록 요소 안에 포함되기를 원합니다.
  • 예, <form> 안에 <div>, <table>, <p> 또는 기타 블록 표현 요소를 배치해야합니다.
+0

사양에 "FORM 요소가 컨트롤의 컨테이너 역할을합니다"및 "양식에 텍스트 및 마크 업이 포함될 수 있습니다. (단락, 목록 등)을 양식 컨트롤에 추가 할 수는 있지만, 직접 컨트롤을 포함 할 수는 없습니다. – StriplingWarrior

1

우선 HTML 자습서가 잘못된 일을하도록 가르치는 것은 놀라운 일이 아닙니다. HTML 모든 일을하는 모든 방법을 받아들이도록 실제로 고안되었습니다. 태그를 닫지 않은 상태로 둘 수 있으며, 부적절하게 그 객체를 중첩시킬 수 있습니다. 이는 개인적으로 XHTML을 사용하는 이유 중 하나입니다.

진술은 사실이지만 HTML이 어떻게 설계 되었기 때문에 실제로는 문제가되지 않습니다. 아마도 XHTML은이를 금지합니다.

양식은 실제로 어떤 종류의 컨테이너도 아닙니다. HTML 스펙의 작성자가 블록 레벨 요소와 같은 것을 좋아하는 것처럼 보입니다. 블록 레벨 요소를 모두 포함해야합니다. 그러나 이것에 대한 내 견해입니다 만, 눈치 챘을 때, 블록 레벨이 아닌 요소는 적절한 컨테이너없이 사용해서는 안됩니다. 정확히 블록 레벨이 아닌 요소를 <blockquote>에 넣지 않아야합니다. 블록 수준 요소는 다른 요소의 컨테이너입니다.

div, 테이블 - 여기도 <p> 일이라고 생각합니다.

5

위의 진술은 사실입니다. HTML에서 < 입력 > 태그는 < 양식 > 태그의 유효한 요소가 아닙니다. 이 유효성을 검사하려면 < 입력 > 태그를 < 필드 세트 > 또는 <div> 중 하나와 함께 묶어야합니다. 아래에 설명되어 있습니다.

<form action="/" method="post"> 
    <fieldset> 
     Field: <input type="text" name="field" /> 
     <br /> 
     <input type="submit" value="Submit" /> 
    </fieldset> 
</form> 
0

글쎄, HTML 4.01 사양 (특히 section 17.3)에 따르면 이것은 기술적으로 사실입니다. 그러나 실제로 웹 브라우저에서 문제를 일으키는 웹 브라우저에 대해서는 잘 모릅니다.

관련 문제