Чи правильно використовувати DIV всередині FORM?


86

Мені просто цікаво, що ви думаєте про тег DIV всередині тегу FORM?

Мені потрібно щось подібне:

<form>
  <input type="text"/>
  <div> some </div>
  <div> another </div>
  <input type="text" />
</form>

Це загальна практика використовувати DIVвсередину FORMчи мені потрібно щось інше?

Відповіді:


133

Це абсолютно добре.

formПредставить тільки свої елементи управління введення типу (* також Textarea, Selectі т.д ...).

Вам не про що турбуватися з приводу divвсередині form.


2
Як щодо використання форми всередині div?
Кік Буттовскі

1
@KickButtowski Форма всередині div - це зовсім не проблема. Ви можете спробувати самі у валідаторі HTML. Крім того, це майже неминуче в наші дні, оскільки сучасні сторінки побудовані на div. Якби це не дозволялося, проста обгортка або розміщення форми в контейнері вже зробило б сторінку недійсною.
Nrzonline

Перевірка форми перестала працювати для мене, оскільки я додав div у форму
Suhas

28

Цілком прийнятно використовувати DIV всередині <form>тегу.

Якщо ви подивитесь на таблицю стилів CSS 2.1 за замовчуванням , divі pобидва вони належать до display: blockкатегорії. Потім, дивлячись на специфікацію HTML 4.01 для елемента форми, вони включають не лише <p>теги, але <table>теги, тому, звичайно, <div>вони відповідають тим самим критеріям. У документації також є <legend>тег всередині форми.

Наприклад, наступне проходить перевірку HTML4 у суворому режимі:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test</title>
</head>
<body>
<form id="test" action="test.php">
<div>
  Test: <input name="blah" value="test" type="text">
</div>
</form>
</body>
</html>

11

Ви можете використовувати <div>внутрішню форму - там немає проблем .... АЛЕ якщо ви збираєтеся використовувати <div>як мітку для inputdont ... label, це набагато кращий варіант:

<label for="myInput">My Label</label> 
<input type="textbox" name="MyInput" value="" />

3

Неправильно мати <input> безпосереднім нащадком <form>

І до речі <input / > може вийти з ладу для певного типу доктрини

Перевірте це за допомогою http://validator.w3.org/check


тип документа не допускає тут елемента "INPUT"; відсутній один із початкових тегів "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS"

<input type = "text" />

Згаданий елемент не може відображатися в тому контексті, в якому ви його розмістили; інші згадані елементи є єдиними, які там дозволені і можуть містити згаданий елемент. Це може означати, що вам потрібен елемент, що містить, або, можливо, ви забули закрити попередній елемент.

Однією з можливих причин цього повідомлення є те, що ви намагалися помістити елемент рівня блоку (наприклад, "<p>" або "<table>") всередину вбудованого елемента (наприклад, "<a>", "<span> ", або" <font> ").


3

Ваше запитання не стосується того, що ви хочете помістити в теги DIV, імовірно, тому ви отримали кілька неповних / неправильних відповідей. Правда полягає в тому, що ви можете, як сказав Рої, розміщувати теги DIV всередині ваших форм. Наприклад, ви не хочете робити це для міток, але якщо у вас є форма з безліччю прапорців, які ви хочете розкласти на три стовпці, тоді неодмінно використовуйте теги DIV (або SPAN, HEADER тощо). .), щоб зробити вигляд та відчуття, яких ви намагаєтесь досягти.


3

Визначення та використання

Тег визначає розділ або розділ у документі HTML.

Тег використовується для групування блок-елементів для форматування їх за допомогою стилів. http://www.w3schools.com/tags/tag_div.asp

Також DIV - MDN

Елемент HTML (або елемент розділу документів HTML) є загальним контейнером для вмісту потоку, який за своєю суттю нічого не представляє. Його можна використовувати для групування елементів для цілей стилізації (з використанням атрибутів класу або ідентифікатора) або тому, що вони мають спільні значення атрибутів, наприклад, lang. Його слід використовувати лише тоді, коли жоден інший семантичний елемент (наприклад, або) не підходить.

Ви можете використовувати div усередині форми, якщо ви говорите про використання div замість таблиці, тоді google про веб-дизайн без таблиці


3
справді? w3schools посилання?
Adonis K. Kakoulidis

2
@AdonisK., Я знаю все про те, чому не слід включати посилання на w3schools, але я вважаю, що це не заслуговує проти, я б просив вас переглянути це обговорення на Мета: meta.stackexchange.com/questions/120025/… Також я оновив посилання на DIV з MDN
Хабіб

1

Як казали інші, це все добре, ви можете це зробити чудово. Особисто для мене я намагаюся дотримуватися форми ієрархічної структури зі своїми елементами, що divє самим зовнішнім елементом. Я намагаюся використовувати лише форми table p ulта spanвсередині них. Просто це полегшує мені відстеження стосунків батьків / дітей на моїх веб-сторінках.


0

Я помітив, що всякий раз, коли я запускав тег форми всередині div, наступні брати та сестри div не будуть частиною форми, коли я перевіряю (chrome inspect), відтепер моя форма ніколи не надсилатиметься.

<div>
<form>
<input name='1st input'/>
</div>
<div>
<input name='2nd input'/>
</div>
<input type='submit'/>
</form>

Я зрозумів, що якщо я поміщу тег форми поза DIV, це спрацює. Тег форми слід розміщувати на початку батьківського DIV. Як показано нижче.

<form>
<div>
<input name='1st input'/>
</div>
<div>
<input name='2nd input'/>
</div>
<input type='submit'/>
</form>

-5

Абсолютно не! Візуалізується, але не перевіряється. Використовуйте ярлик.

Це неправильно. Він недоступний. Ви бачите це на деяких веб-сайтах, тому що деякі розробники просто ледачі. Коли я наймаю розробників, це одна з перших речей, на які я перевіряю роботу кандидатів. Форми неприємні, але не поспішайте і навчіться робити їх правильно


-8

Ні це не так

<div>теги завжди зловживають для створення веб-макета. Його символічне призначення - розділити розділ / частину на сторінці таким чином, щоб до неї можна було додати або застосувати окремий стиль. [w3schools Doc] [W3C]

Це сильно залежить від того, що ваші someі anotherмають.

HTML5 має більше логічного значення тегів, замість того, щоб мати теги простого макета. section, header, nav, asideВсе мають своє власне смислове значення для нього. І використовуються проти<div>


1
Я схильний погодитися. У html можна зробити багато речей . Але через ці розпущені вказівки саме тому ми виявляємо, що викопуємо безлад в настільних веб-макетах із кодом, повним хакерів. Єдиний спосіб розвитку Інтернету - це якщо ми продовжуватимемо слідувати новим рекомендаціям, якими вони представлені нам.
JT Smith

Ну, мені потрібна якась область на веб-сторінці. Користувачі клацають на цій області та встановлюють значення на введеннях форми. Який HTML-елемент підходить для цього випадку?
demas

1
@demas, Для використання вашого визначення <select>ідеально підходить, якщо вибір надано, якщо ні <a>чи <buttons>то.
Starx

27
-1 ви абсолютно помиляєтесь. КОЖНИЙ ВЕЛИКИЙ САЙТ використовує div всередині форми. ви дали в html 5 прикладів, які не мають нічого спільного з питанням. покажи мені один великий сайт, який не має div у формі. Люди на цьому сайті заважають відповіді, не перевіряючи та вводять інших користувачів в оману
Рої Намір

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