Можно ли вложить HTML-формы, как это
<form name="mainForm">
<form name="subForm">
</form>
</form>
так что обе формы работают? У моего друга проблемы с этим, часть subForm
работ, а другая - нет.
html
nested-forms
Леви
источник
источник
Ответы:
Одним словом, нет. На странице может быть несколько форм, но они не должны быть вложенными.
Из рабочего проекта html5 :
источник
Я столкнулся с подобной проблемой, и я знаю, что это не ответ на вопрос, но он может помочь кому-то с такой проблемой:
если необходимо поместить элементы двух или более форм в заданную последовательность , то HTML5
<input> form
атрибут может быть решением.С http://www.w3schools.com/tags/att_input_form.asp :
Сценарий :
Реализация :
Здесь вы найдете совместимость браузера.
источник
<input type="submit"
связан с тем,<form>
который указываетaction
,<input />
ссылки, связанные с тем же самым,<form>
будут использоваться в этом запросеВторая форма будет игнорироваться, см. Фрагмент из WebKit, например:
источник
Обычный HTML не может позволить вам сделать это. Но с помощью JavaScript вы можете сделать это. Если вы используете javascript / jquery, вы можете классифицировать элементы формы с помощью класса, а затем использовать serialize () для сериализации только тех элементов формы для подмножества элементов, которые вы хотите отправить.
Тогда в вашем javascript вы можете сделать это для сериализации элементов class1
Для класса 2 вы могли бы сделать
Для всей формы
или просто
источник
Если вы используете AngularJS, любые
<form>
теги внутри васng-app
заменяются во время выполненияngForm
директивами, которые предназначены для вложения.источник
Поскольку сейчас 2019 год, я бы хотел дать обновленный ответ на этот вопрос. Можно достичь того же результата, что и вложенные формы, но без их вложения. HTML5 ввел атрибут формы. Вы можете добавить атрибут формы для элементов управления формы вне формы, чтобы связать их с определенным элементом формы (по идентификатору).
https://www.impressivewebs.com/html5-form-attribute/
Таким образом, вы можете структурировать ваш HTML следующим образом:
Атрибут формы поддерживается всеми современными браузерами. IE не поддерживает это, хотя IE уже не браузер, а скорее инструмент совместимости, что подтверждается самой Microsoft: https://www.zdnet.com/article/microsoft-security-chief-ie-is-not-a -browser-so-stop-using-it-as-your-default / . Пора перестать заботиться о том, чтобы все работало в IE.
https://caniuse.com/#feat=form-attribute
https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fae-form
Из спецификации HTML:
источник
Другой способ обойти эту проблему, если вы используете какой-либо серверный язык сценариев, который позволяет вам манипулировать опубликованными данными, это объявить свою HTML-форму следующим образом:
Если вы напечатаете опубликованные данные (я буду использовать PHP здесь), вы получите массив, подобный этому:
Тогда вы можете просто сделать что-то вроде:
Ваш $ _POST теперь содержит только ваши данные «главной формы», а ваши данные подчиненной формы хранятся в другой переменной, которой вы можете манипулировать по своему желанию.
Надеюсь это поможет!
источник
Как сказал Крейг, нет.
Но относительно вашего комментария относительно того, почему :
Может быть проще использовать 1
<form>
со входами и кнопку «Обновить», а также использовать копирование скрытых входов с кнопкой «Отправить заказ» в другое<form>
.источник
http://www.w3.org/MarkUp/html3/forms.html
https://www.w3.org/TR/html4/appendix/changes.html#hA.3.9 (спецификация html4 не отмечает никаких изменений в отношении вложенных форм с 3.2 до 4)
https://www.w3.org/TR/html4/appendix/changes.html#hA.1.1.12 (спецификация html4 не отмечает никаких изменений, касающихся вложенности форм с 4.0 до 4.1)
https://www.w3.org/TR/html5-diff/ (спецификация html5 не отмечает никаких изменений, касающихся вложенности форм с 4 по 5)
https://www.w3.org/TR/html5/forms.html#association-of-controls-and-forms комментирует «Эта функция позволяет авторам обойти отсутствие поддержки вложенных элементов формы.», но делает не указывайте, где это указано, я думаю, что они предполагают, что мы должны предполагать, что это указано в спецификации html3 :)
источник
Простой обходной путь - использовать iframe для хранения «вложенной» формы. Визуально форма вложенная, но на стороне кода она в отдельном html-файле.
источник
Вы также можете использовать formaction = "" внутри тега кнопки.
Это будет вложено в исходную форму в виде отдельной кнопки.
источник
Даже если бы вы могли заставить его работать в одном браузере, нет гарантии, что он будет работать одинаково во всех браузерах. Таким образом, хотя вы могли бы заставить его работать некоторое время, вы, конечно, не сможете заставить его работать все время.
источник
У вас даже могут возникнуть проблемы с его работой в разных версиях одного и того же браузера. Поэтому избегайте этого.
источник
Хотя я не представляю решение для вложенных форм (оно не работает надежно), я предлагаю обходной путь, который работает для меня:
Сценарий использования: Суперформа, позволяющая изменять N элементов одновременно. Он имеет кнопку «Отправить все» внизу. Каждый элемент хочет иметь свою собственную вложенную форму с кнопкой «Отправить элемент № N». Но не могу ...
В этом случае можно реально использовать одну форму, а затем имя быть кнопки
submit_1
..submit_N
иsubmitAll
и обрабатывать его серверы на стороне, лишь глядя на Params , заканчивающихся в_1
случае , если имя кнопки былоsubmit_1
.Хорошо, так что не большая часть изобретения, но это делает работу.
источник
О вложенных формах: один день я провел 10 лет, пытаясь отладить сценарий ajax.
мой предыдущий ответ / пример не учитывал разметку html, извините.
form_2 постоянно терпел неудачу, говоря неправильный form_2.
Когда я переместил ajaxContainer, который создал form_2
<i>outside</i>
из form_1, я вернулся в бизнес. Это ответ на вопрос, почему можно вкладывать формы. Я имею в виду, на самом деле, какой идентификатор, если не определить, какую форму использовать? Должна быть лучшая, приятная работа вокруг.источник
Используйте пустой тег формы перед вашей вложенной формой
Протестировано и работало на Firefox, Chrome
Не проверено на IE
источник
Хотя вопрос довольно старый, и я согласен с @everyone, что в HTML не разрешено вложение форм
Но это то, что все, возможно, захотят увидеть это
где вы можете взломать (я называю это взломом, так как я уверен, что это не законно) HTML, чтобы браузер имел вложенную форму
JS FIDDLE LINK
http://jsfiddle.net/nzkEw/10/
источник
Нет, вы не можете иметь вложенную форму. Вместо этого вы можете открыть модал, содержащий форму и выполнить отправку формы Ajax.
источник
На самом деле не возможно ... Я не мог вкладывать теги формы ... Однако я использовал этот код:
с
{% csrf_token %}
и прочееи применил некоторые JS
источник
Сегодня я также застрял в той же проблеме, и решить проблему, я добавил пользовательский элемент управления и
на этом элементе управления я использую этот код
и на событии PreRenderComplete страницы вызовите этот метод
Я верю, что это поможет.
источник
Прежде чем я знал, что не должен был этого делать, у меня были вложенные формы для нескольких кнопок отправки. Пробежал так за 18 месяцев тысячи регистрационных транзакций, никто не звонил нам о каких-либо трудностях.
Вложенные формы дали мне идентификатор для анализа на правильное действие. Не сломался, пока я не попытался прикрепить поле к одной из кнопок, и Валидат пожаловался. Ничего страшного в этом не было - я использовал явное stringify для внешней формы, поэтому не имело значения, что submit и форма не совпадали. Да, да, надо было взять кнопки из отправки на клик.
Дело в том, что есть обстоятельства, когда он не полностью нарушен. Но "не полностью сломанный", возможно, слишком низкий стандарт, чтобы стрелять :-)
источник