Могу ли я вложить теги формы в другие теги формы? - PullRequest
12 голосов
/ 23 декабря 2010

Можно ли поместить тег <form> в другой тег <form>?

Например:

<form>
  <form>
  </form>
</form>

Ответы [ 6 ]

19 голосов
/ 23 декабря 2010

Нет, вложенные формы запрещены.


Это выражается в HTML 4.01 DTD как:

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

- http://www.w3.org/TR/html4/interact/forms.html#h-17.3

Это означает, что ФОРМА имеет обязательный начальный тег, обязательный конечный тег и может содержать что-либо в% block или SCRIPT, кроме других ФОРМ.t столь же выразительный, как и DTML SGML, поэтому в XHTML это правило указано только в читаемом человеком тексте спецификации:

форма не должна содержать другие элементы формы.1023 *

- http://www.w3.org/TR/xhtml1/#prohibitions


HTML 5 не является приложением SGML и не имеет официального машиночитаемого описания языка.Также это правило выражается в тексте:

Модель содержимого:

Содержимое потока, но без потомков элементов формы.

- http://www.w3.org/TR/html5/forms.html#the-form-element

2 голосов
/ 23 декабря 2010

Вы не можете их вкладывать, но вы можете группировать элементы ... для этого есть механизм, элемент <fieldset> , используемый для группировки элементов управления / меток ... и в HTML5-ассоциированныхэто к конкретным формам, отключить содержимое и т. д.

1 голос
/ 23 декабря 2010

Вложенные формы не разрешены в соответствии со спецификацией (я не уверен, что будет, если попытаться, я не пробовал).

Есть интересное обсуждение темы в предыдущий вопрос , однако.

0 голосов
/ 27 июля 2011

Непосредственно в формах не допускается.Весь ваш javascript не будет работать, и предполагаемого поведения там не будет.

Тем не менее, вы можете попробовать это:

<form name ="1st form">
<...>
<div> <form id="dummy"></form></div>
<...>
<form name = "2nd form">
</form>
<...>
</form>

Вам потребуется создать фиктивную форму между двумя формами, которые вы намеревались использовать.1 примечание предостережения, 1-я форма и фиктивная форма должны иметь несколько тегов между ними.в противном случае это не сработает.

0 голосов
/ 06 апреля 2011

Работает нормально с XHTML 1.0 Strict.

Я даже проверил валидацию, вставив нижеприведенное в http://validator.w3.org/check.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Markup Test</title>
    <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
  </head>
  <body>
    <h1>Markup Test</h1>
    <p>
      This doc contains a form with a nested form and validates at
      <a title="Validate using W3C Markup Validation Service" href="http://validator.w3.org/check?uri=referer">
        http://validator.w3.org/
      </a>
    </p>
    <form action="#">
      <div>
        <form action="#">
        </form>
      </div>
    </form>
  </body>
</html>

ОДНАКО Квентин ниже верен: я проверил и открытие вложенной формыЗакрывающие теги и игнорируются.Элементы ввода формы, появляющиеся до, внутри и после дочерних тегов формы, рассматриваются как элементы родительской формы, включая кнопки отправки.JavaScript ссылается на this.form из дочерней формы ссылается на родительскую форму.Если вы даете дочерней форме идентификатор и извлекаете его через getElementById, тогда вы получаете элемент, но .submit() ничего не делает.В основном это одна форма (родительская) с тегами мусора.

0 голосов
/ 23 декабря 2010

Нет, используйте <fieldset>, если вы хотите разделить свои формы.Некоторые браузеры могут анализировать его (не тестировали), но в соответствии со стандартом w3 запрещено использовать формы в других формах.

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