HTML: риск использования вложенных <form>с? - PullRequest
4 голосов
/ 10 мая 2011

Существуют ли какие-либо проблемы совместимости браузера с использованием этого макета

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

Ожидаемый результат

  • Нажатие ввода во втором входе или нажатие первой кнопки запускает отправку внутреннейform.
  • Нажатие ввода в первом или третьем входе или нажатие последней кнопки запускает отправку внешней формы.

Ответы [ 2 ]

9 голосов
/ 10 мая 2011

Это недействительный HTML.

Вы не можете вкладывать теги форм.

Из DTD и спецификации :

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

-(FORM) специально запрещает вложенную форму.

Ожидаемый результат: Ошибка проверки в службе проверки W3.

Ожидаемый браузером результат: неопределенное поведение.

3 голосов
/ 10 мая 2011

Я столкнулся с этим случайно только вчера. В Safari атрибут «method» внутреннего тега формы игнорируется, и кнопка отправки для внутренней формы отправляется с использованием метода внешней формы. Короче, не делай этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...