Является ли хорошей практикой использовать атрибут формы и помещать элементы ввода вне тега формы в 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
да, вы можете поместить элемент ввода вне формы, но как бы вы определили, как и где вы собираетесь отправлять значения этих элементов.