Верны ли вложенные формы в HTML5?

Вложенные формы Приемлемо?

Я не могу найти ничего в документе HTML5, который говорит о вложенных формах. Я уверен, что он указан на какой-то странице, где-то (возможно, в журнале изменений), но если нет, то должен ли я предположить, что отсутствие упоминаний такое же, как приемлемое?

Кроме того, документ HTML4 не упоминает об этом. Возможно, это было разрешено все время, и я придерживался старых стандартов.

Предыдущие упоминания

XHTML1.0

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

HTML 3.0

В одном документе может быть несколько форм, но элемент FORM не может быть вложенным.

2 ответа

Решение

Документ HTML5 упоминает об этом в разделе, который вы указали выше:

Модель контента

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

"Модель содержимого" означает "что может содержать этот элемент". Так что нет, вложенные формы не допускаются.

Если бы их поддерживали, то что-то вроде этого работало бы:

$('button').on('click', function(e) {
    var form = $(this).parents('form');
    e.preventDefault();
    if(!form) {
        form = $(this);
    }
    $('#output').val('from '+form.attr('id')+'\n'+form.serialize());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<form id='parent'>
    <form id='childA'>
        <input type='text' placeholder='value of A'/>
    <button>Send part A</button>
</form>
    <form id='childB'>
        <input type='text' placeholder='value of B'/>
    <button>Send part B</button>
</form>
    <button>Send All</button>
</form>
<br/>
<textarea id='output'></textarea>

Однако, поскольку он официально не поддерживается, вы можете увидеть, что браузер предотвращает его (закрывая то, что предполагается открытым. form элементы). Одна альтернатива будет иметь один form но добавь data атрибуты для отдельных входов, чтобы JavaScript мог собирать нужные вам подполя и вручную создавать POST от них.

Другие вопросы по тегам