Хорошо ли <input> сформирован без <form>?


225

Допустимо ли иметь <input>без этого в <form>?

Иметь процесс для разметки некоторых полей на страницах и просто найти страницу с полями ввода, которые не были отмечены, как я ожидал.
Это заняло у меня некоторое время, но я понял, что процесс получения элементов формы и получения полей - это то, что заставило их пропустить, потому что формы нет.


@ Адриано - моя мысль точно. просто запустите его и посмотрите!
Габриэль Херли

1
Конечно, валидатор w3c , я действительно должен был добавить объяснение, почему было бы неплохо.
Грег Домжан

Я имею в виду также, что он может быть действительным для некоторых версий html, но не для других, и в этом случае валидатор намного быстрее, чем просматривает стандарты.
Адриано Вароли Пьяцца

Ответы:


200

<input>без <form> действительного , да (по крайней мере для HTML 4.01, посмотрите ближе к концу 17.2.1):

Элементы, используемые для создания элементов управления, обычно появляются внутри элемента FORM, но могут также появляться за пределами объявления элемента FORM, когда они используются для создания пользовательских интерфейсов. Это обсуждается в разделе о внутренних событиях. Обратите внимание, что элементы управления вне формы не могут быть успешными элементами управления.


7
Чтобы можно было отправлять данные формы на сервер (кроме Ajax).
Людовик Куты

5
@PhilipSmith Я знаю, что ваш комментарий был написан давно . Но почему вы думаете, что это странно или бессмысленно? Зачем мне создавать форму, если элемент управления не взаимодействует с сервером?
Адам-Бек

18
Что такое «успешный контроль»?
АликЭльзин-килака

22
Когда форма отправляется на обработку, некоторые элементы управления получают имя в паре с текущим значением, и эти пары передаются вместе с формой. Те элементы управления, для которых представлены пары имя / значение, называются успешными элементами управления. w3c
SantiBailors

3
@ adam-beck Например, определенный веб-сайт AngularJS обрабатывает ввод, обрабатывает данные и отправляет их в API. Шаблоны HTML для форм могут быть написаны без каких-либо тегов форм, и они прекрасно взаимодействуют с сервером.
sr9yar


6

Ссылка на более актуальную спецификацию:

HTML 5.2 - Рекомендация W3C (14 декабря 2017 г.)

Элемент, связанный с формой, может иметь связь с <form>элементом, который называется владельцем формы элемента. Если элемент, связанный с формой, не связан с <form>элементом, его владелец формы считается нулевым.


4

Согласно МДН возможно:

Обратите внимание, что всегда можно использовать виджет формы вне элемента, но если вы это сделаете, этот виджет формы не имеет никакого отношения к какой-либо форме. Такие виджеты можно использовать вне формы, но тогда у вас должен быть специальный план для таких виджетов, поскольку они ничего не будут делать самостоятельно. Вам придется настроить их поведение с помощью JavaScript.

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


2

Я знаю, что этот вопрос довольно старый, однако я успешно построил много сложных страниц ввода данных без тегов формы. Хотя это не считается "стандартным" для многих, НЕЛЬЗЯ использовать входы без<form> . Мои проекты были случаями, когда мне требовался полный контроль над тем, как ведет себя страница и что мешает поведению по умолчанию. Был в состоянии выполнить проверку на уровне страницы и поля (используя JS) и «отправил» данные с помощью вызовов Ajax и т. Д. На самом деле, это мой предпочтительный способ в эти дни.

Требуется много JS, но это не так сложно и легко сделать как код многократного использования.

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

Надеюсь, что этот отзыв кому-то поможет.


1

Да, вы можете иметь действительный ввод без формы.


14
Ну, вы могли бы добавить некоторые доказательства за «да». Или уточнение, для каких версий HTML это верно. Тем не менее, я бы не унижал тебя.
Адриано Вароли Пьяцца

9
Итак, с вашим обоснованием, зачем вообще иметь SO, если пользователь может просто зайти на W3 и посмотреть сам? Я бы тоже не проголосовал против вас, но я должен согласиться, что тот, у кого больше объяснений в ясной и лаконичной форме, получит одобрение, потому что объяснение, а также правильный ответ - это то, что наиболее полезно здесь, в SO.
Mattygabe

-10

Конечно, используйте

document.getElementById('your_input_id').validity.valid

проверять действительность поля динамически.


31
Это не имеет ничего общего с достоверностью разметки, а только для API проверки ограничений . Как этот ответ получил 8 голосов, мне не под силу.
user247702
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.