Czy używanie DIV wewnątrz FORMU jest prawidłowe?

86

Zastanawiam się tylko, co myślisz o DIV-tagu wewnątrz FORM-tagu?

Potrzebuję czegoś takiego:

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

Czy używanie DIVwewnątrz jest powszechną praktyką, FORMczy potrzebuję czegoś innego?

demas
źródło

Odpowiedzi:

133

To jest w porządku.

formZłoży tylko jego kontroli input type (* również Textarea, Selectitd ...).

Nie masz się czym martwić a divw form.

Royi Namir
źródło
2
A co powiesz na użycie formularza wewnątrz elementu div?
Kick Buttowski
1
@KickButtowski Formularz wewnątrz div nie stanowi żadnego problemu. Możesz spróbować sam w walidatorze HTML. Poza tym jest to obecnie prawie nieuniknione, ponieważ współczesne strony są zbudowane na stronach div. Gdyby nie było to dozwolone, zwykłe opakowanie lub umieszczenie formularza w kontenerze już spowodowałoby, że strona byłaby nieważna.
Nrzonline,
Weryfikacja formularza przestała działać, odkąd dodałem elementy div w formularzu
Suhas
28

Całkowicie dopuszczalne jest używanie DIV wewnątrz <form>tagu.

Jeśli spojrzymy na domyślny CSS 2.1 stylów , divi pto zarówno w display: blockkategorii. Patrząc na specyfikację HTML 4.01 elementu formularza, zawierają one nie tylko <p>tagi, ale także <table>tagi, więc oczywiście <div>spełniają te same kryteria. W dokumentacji znajduje się również <legend>tag.

Na przykład poniższy kod przechodzi weryfikację HTML4 w trybie ścisłym:

<!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>
Alex W.
źródło
11

Możesz użyć a <div>w formularzu - nie ma problemu .... ALE jeśli zamierzasz użyć <div>jako etykiety dla inputnie ... labeljest znacznie lepszą opcją:

<label for="myInput">My Label</label> 
<input type="textbox" name="MyInput" value="" />
Manse
źródło
3

Błędem jest umieszczanie <input> jako bezpośredniego elementu potomnego <form>

A tak przy okazji, <input / > może się nie powieść na jakimś doctype

Sprawdź to za pomocą http://validator.w3.org/check


typ dokumentu nie zezwala tutaj na element „INPUT”; brak jednego z tagów początkowych „P”, „H1”, „H2”, „H3”, „H4”, „H5”, „H6”, „PRE”, „DIV”, „ADDRESS”

<input type = "text" />

Wspomniany element nie może pojawić się w kontekście, w którym go umieściłeś; pozostałe wymienione elementy są jedynymi, które są tam dozwolone i mogą zawierać wspomniany element. Może to oznaczać, że potrzebujesz elementu zawierającego lub być może zapomniałeś zamknąć poprzedniego elementu.

Jedną z możliwych przyczyn tego komunikatu jest próba umieszczenia elementu blokowego (takiego jak „<p>” lub „<table>”) wewnątrz elementu wbudowanego (takiego jak „<a>”, „<span>” ”lub„ <font> ”).

stefan bachert
źródło
3

Twoje pytanie nie dotyczy tego, co chcesz umieścić w tagach DIV, prawdopodobnie dlatego otrzymałeś niepełne / błędne odpowiedzi. Prawda jest taka, że ​​możesz, jak powiedział Royi, umieścić tagi DIV w swoich formularzach. Nie chcesz tego robić na przykład dla etykiet, ale jeśli masz formularz z wieloma polami wyboru, który chcesz rozłożyć na trzy kolumny, to jak najbardziej użyj tagów DIV (lub SPAN, HEADER itp. .), aby uzyskać wygląd i styl, który próbujesz osiągnąć.

Clinton
źródło
3

Definicja i użycie

Znacznik definiuje dział lub sekcję w dokumencie HTML.

Znacznik służy do grupowania elementów blokowych w celu formatowania ich za pomocą stylów. http://www.w3schools.com/tags/tag_div.asp

Również DIV - MDN

Element HTML (lub element podziału dokumentu HTML) jest ogólnym kontenerem treści przepływu, który z natury niczego nie reprezentuje. Może być używany do grupowania elementów w celu stylizacji (przy użyciu atrybutów class lub id) lub ponieważ mają wspólne wartości atrybutów, takie jak lang. Powinien być używany tylko wtedy, gdy żaden inny element semantyczny (taki jak lub) nie jest odpowiedni.

Możesz użyć div wewnątrz formularza, jeśli mówisz o używaniu div zamiast table, to Google o projektowaniu stron internetowych bez tablic

Habib
źródło
3
naprawdę? w3schools odniesienia?
Adonis K. Kakoulidis
2
@AdonisK., Wiem wszystko o tym, dlaczego nie powinno się umieszczać odniesienia do w3schools, ale uważam, że nie zasługuje na negatywną opinię, proszę o obejrzenie tej dyskusji na Meta: meta.stackexchange.com/questions/120025/ ... Zaktualizowałem również odniesienie do DIV z MDN
Habib
1

Jak powiedzieli inni, wszystko jest w porządku, możesz to zrobić dobrze. Dla mnie osobiście staram się zachować formę hierarchicznej struktury, w której moje elementy divsą najbardziej zewnętrznym elementem macierzystym. Staram się używać tylko table p uli spanwewnątrz formularzy. Po prostu ułatwia mi śledzenie relacji rodzic / dzieci na moich stronach internetowych.

JT Smith
źródło
0

Zauważyłem, że za każdym razem, gdy zaczynam tag formularza wewnątrz elementu div, kolejne rodzeństwo div nie będzie częścią formularza, kiedy będę sprawdzać (przegląd chrome), odtąd mój formularz nigdy nie zostanie przesłany.

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

Pomyślałem, że jeśli umieszczę tag formularza poza DIV, zadziała. Znacznik formularza należy umieścić na początku nadrzędnego DIV. Jak pokazano poniżej.

<form>
<div>
<input name='1st input'/>
</div>
<div>
<input name='2nd input'/>
</div>
<input type='submit'/>
</form>
Vincent Omondi
źródło
-5

Absolutnie nie! Wyrenderuje się, ale nie zweryfikuje. Użyj etykiety.

To jest niepoprawne. Nie jest dostępny. Widzisz to na niektórych stronach internetowych, ponieważ niektórzy programiści są po prostu leniwi. Kiedy zatrudniam programistów, jest to jedna z pierwszych rzeczy, które sprawdzam w pracy kandydatów. Formularze są nieprzyjemne, ale poświęć trochę czasu i naucz się wykonywać je prawidłowo

user2774731
źródło
-8

Nie, nie jest

<div>tagi są zawsze nadużywane przy tworzeniu układu strony. Jego symbolicznym celem jest podzielenie sekcji / części strony, aby można było dodać lub zastosować do niej oddzielny styl. [w3schools Doc] [W3C]

W dużej mierze zależy to od tego, co masz somei co masz another.

HTML5 ma bardziej logiczne tagi znaczeniowe, zamiast zwykłych tagów układu. section, header, nav, asideWszystko ma swoje własne znaczenie semantyczne do niego. I są używane przeciwko<div>

Starx
źródło
1
Zwykle się zgadzam. Istnieje wiele rzeczy, które można zrobić wewnątrz html. Ale z powodu tych luźnych wytycznych odkrywamy, że wykopujemy się z bałaganu złożonego z tabelowych układów internetowych z kodem pełnym hacków. Jedynym sposobem, w jaki sieć może się rozwijać, jest ciągłe przestrzeganie nowych wytycznych, które są nam przedstawiane.
JT Smith
Cóż, potrzebuję jakiegoś obszaru na stronie internetowej. Użytkownicy klikają te obszary i ustawiają wartości w formularzach. Jaki element HTML pasuje do tego przypadku?
dema
1
@demas, Twoja definicja <select>pasuje idealnie, jeśli istnieją wybory, jeśli nie, <a>lub <buttons>są dobre.
Starx
27
-1 całkowicie się mylisz. KAŻDA DUŻA WITRYNA używa div wewnątrz formularza. podałeś w html 5 przykładów, które nie mają nic wspólnego z pytaniem. pokaż mi jedną dużą witrynę, która nie ma elementu div w formie. ludzie tu, w tym miejscu throuws odpowiedzi bez sprawdzania i wprowadzać w błąd innych użytkowników
Royi Namir
4
sposobem, aby czegoś nie budować, jest z reguły przyjrzenie się, jak zrobił to kod korporacyjny. jeśli używasz tych elementów div tylko do zawarcia tekstu, jeśli tekst dotyczy formantów formularza, użyj etykiety. jeśli nie, użyj p. znaczenie semantyki. dostępność ma znaczenie.
Albert