2011-05-10 2 views
4

이 레이아웃HTML : 중첩 된 <form> s를 사용할 위험이 있습니까?

<form action="javascript:alert('error on submit outer')" onsubmit="submitOuterScriptedForm(this); return false"> 
    <input name="field1"/> 
    <form action="javascript:alert('error on submit inner')" onsubmit="submitInnerScriptedForm(this); return false"> 
    <input name="field1"/> 
    <button type="submit">Click here for JavaScript mini-form</button> 
    </form> 
    <input name="field2"/> 
    <button type="submit">Click here to submit JavaScript main form</button> 
</form> 

예상 결과 두 번째 입력에 입력하거나 첫 번째 버튼을 클릭하면 내부 형식의 태그의 onsubmit 트리거를 누르면

  • 을 사용하여 브라우저 호환성 문제가 있습니다.
  • 첫 번째 또는 세 번째 입력에서 Enter 키를 누르거나 마지막 단추를 클릭하면 외부 양식의 온 서브 미트가 트리거됩니다.

답변

3

어제 우연히 만난 적이 있습니다. Safari에서 내부 양식 태그의 "method"속성은 무시되고 내부 양식의 제출 단추는 외부 양식의 방법을 사용하여 제출됩니다. 즉,하지 마십시오.

+1

오페라, 파이어 폭스 및 IE는 어떻게 작동합니까? 같은 방법으로? – Oded

9

유효하지 않은 HTML입니다.

양식 태그를 중첩 할 수 없습니다. DTD and spec 가입일

:

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM) -- interactive form --> 

-(FORM) 구체적 중첩 된 형태를 허용하지.

예상 결과 : W3 유효성 검사 서비스의 유효성 검사 오류.

브라우저 예상 결과 : 정의되지 않은 동작입니다.

관련 문제