Чи <input> добре сформований без <form>?


225

Чи дійсно мати <input>його, не будучи в a <form>?

Провести процес розмітки деяких полів на сторінках, і я просто знайшов сторінку з полями введення, яка там, де не позначається, як я очікував.
Мені знадобилось певний час, але я розробив, що процес отримання елементів форми, а потім отримання полів - це те, що спричинило їх пропущення, оскільки немає форми.


@Adriano - моя думка точно. просто запустіть його і подивіться!
Габріель Херлі

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

Згідно з MDN можна:

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

HTML5 представляє атрибут форми для елементів форми HTML. Це повинно дозволяти вам явно зв’язувати елемент із формою, навіть якщо він не вкладений у тег форми. На жаль, наразі реалізація цієї функції у веб-переглядачах ще недостатньо хороша, щоб покластися на неї.


2

Я знаю, що це питання досить старе, проте я успішно створив багато складних сторінок для введення даних без тегів форми. Хоча багато хто не вважається "стандартним", НЕ недоцільно використовувати матеріали без " <form>. Мої проекти були випадками, коли мені потрібен був повний контроль над тим, як сторінка веде себе і поведінка форми за замовчуванням заважає. Вміла виконати перевірку рівня сторінок і полів (за допомогою JS) та "подала" дані за допомогою Ajax-дзвінків тощо. Насправді це є моїм кращим способом у ці дні.

Багато JS потрібно, але це не так вже й складно, і це легко зробити як код багаторазового використання.

Є й інші випадки, коли я дефігую НЕ використовую форми з введеннями, такі як сторінки входу.

Сподіваюсь, цей відгук комусь допомагає.


1

Так, ви можете мати дійсний ввід без форми.


14
Ну, ви могли б додати деякі докази, що стоять за "так". Або уточнення, для яких версій HTML це справедливо. Тим не менш, я б не пошкодив тебе.
Адріано Варолі П'яцца

9
Тож із вашим обґрунтуванням чому взагалі взагалі існувати SO, якщо користувач може просто перейти на W3 і переглянути його сам? Я б і не звернувся до вас, але мені доведеться погодитись, що той, хто має більше пояснень у чіткому та стислому вигляді, отримує позитивну заяву, тому що пояснення, а також правильна відповідь - це те, що найбільше корисно тут.
Mattygabe

-10

Звичайно, користуйся

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

щоб динамічно перевірити правильність поля.


31
Це не має нічого спільного з дійсністю розмітки, натомість це для API перевірки обмежень . Як ця відповідь отримала 8 відгуків, мені не виходить.
користувач247702
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.