Является ли хорошей практикой использовать атрибут формы и помещать элементы ввода вне тега формы в HTML?

Я просто заметил интересный способ размещения элементов ввода вне тега формы сегодня.

<html>
    <!-- the form element -->
    <form id="testform" method="post" action="index.asp">
        <label for="text1">Text: </label>
        <input type="text" id="text1" name="text1" />
        <button type="submit">Submit</button>
    </form>

    <!--- element outside form tag -->
    <label for="text2">Additional Text: </label>
    <input type="text" id="text2" name="text2" form="testform" />

</html>

Мне просто интересно, привычно ли это делать. Следует ли избегать этого метода? Пробовал поиск в Google для подобных обсуждений, но я действительно не знаю, как это выразить.

Ответ 1

Это не обычная практика. В большинстве случаев он не имеет преимуществ, но имеет недостаток: некоторые старые браузеры не поддерживают атрибут form, поэтому на них просто не работают.

Элемент input вне элемента form всегда разрешен. Такой элемент просто не будет участвовать в подаче любой формы, если у него нет атрибута form. Но он может использоваться с клиентскими скриптами.

Атрибут form связывает в поддерживающих браузерах элемент с формой, как если бы элемент находился внутри формы. Это может быть полезно в сложных случаях, когда, например, одна строка таблицы должна содержать поля формы, другие поля строки другой формы и т.д. Вы не можете обернуть только одну строку внутри формы, и здесь атрибут приходит на помощь: вы помещаете элемент form внутри одной ячейки строки и ссылаться на этот элемент в полях в других ячейках с атрибутом form.

Ответ 2

Да, вы можете определенно сделать это с HTML5, используя атрибут form на входах, расположенных за пределами элемента form; как и вы.

Подробнее и примеры см. в HTML <input> атрибут формы в школах W3.

Ответ 3

Нет ничего плохого в их размещении, и они будут доступны в DOM, если вы что-то делаете с javascript и т.д., но когда вы отправляете форму, значения ваших полей не будут представлены в результатах.

Ответ 4

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