È corretto utilizzare DIV all'interno di FORM?


86

Mi chiedo solo cosa stai pensando di DIV-tag all'interno di FORM-tag?

Ho bisogno di qualcosa di simile:

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

È pratica generale usare DIVall'interno FORMo ho bisogno di qualcosa di diverso?

Risposte:


133

Va tutto bene.

Il formpresenteranno solo i controlli di tipo di ingresso (* anche Textarea, Select, ecc ...).

Non devi preoccuparti di a divall'interno di a form.


2
Che ne dici di utilizzare un modulo all'interno di un div?
Calcio Buttowski

1
@KickButtowski Un modulo all'interno di un div non è affatto un problema. Puoi provarlo tu stesso con un validatore HTML. Inoltre, è quasi inevitabile in questi giorni, dal momento che le pagine moderne si basano su div. Se non fosse consentito, un semplice wrapper o l'inserimento del modulo in un contenitore renderebbe già la pagina non valida.
Nrzonline

La convalida del modulo ha smesso di funzionare per me da quando ho aggiunto div all'interno del modulo
Suhas

28

È del tutto accettabile utilizzare un DIV all'interno di un <form>tag.

Se si guarda al valore predefinito CSS 2.1 foglio di stile , dive psono entrambi nella display: blockcategoria. Quindi, esaminando la specifica HTML 4.01 per l'elemento form, non includono solo <p>tag, ma <table>tag, quindi ovviamente <div>soddisfano gli stessi criteri. C'è anche un <legend>tag all'interno del modulo nella documentazione.

Ad esempio, quanto segue supera la convalida HTML4 in modalità rigorosa:

<!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

Puoi usare un <div>all'interno di un modulo - non ci sono problemi lì .... MA se hai intenzione di usare <div>l'etichetta per il inputnon ... labelè un'opzione molto migliore:

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

3

È sbagliato avere <input> come figlio diretto di un <form>

E tra l'altro <input / > potrebbe non riuscire su alcuni doctype

Controllalo con http://validator.w3.org/check


il tipo di documento non consente l'elemento "INPUT" qui; manca uno dei tag di inizio "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS"

<input type = "text" />

L'elemento menzionato non può apparire nel contesto in cui lo hai inserito; gli altri elementi menzionati sono gli unici che sono entrambi consentiti e possono contenere l'elemento menzionato. Ciò potrebbe significare che hai bisogno di un elemento contenitore o forse che hai dimenticato di chiudere un elemento precedente.

Una possibile causa di questo messaggio è che hai tentato di inserire un elemento a livello di blocco (come "<p>" o "<table>") all'interno di un elemento inline (come "<a>", "<span> "o" <font> ").


3

La tua domanda non riguarda ciò che vuoi inserire nei tag DIV, motivo per cui hai ricevuto alcune risposte incomplete / sbagliate. La verità è che puoi, come ha detto Royi, inserire tag DIV all'interno dei tuoi moduli. Non vuoi farlo per le etichette, ad esempio, ma se hai un modulo con un mucchio di caselle di controllo che vuoi disporre in tre colonne, allora usa tutti i tag DIV (o SPAN, HEADER, ecc. .) per ottenere l'aspetto e la sensazione che stai cercando di ottenere.


3

Definizione e utilizzo

Il tag definisce una divisione o una sezione in un documento HTML.

Il tag viene utilizzato per raggruppare elementi di blocco per formattarli con gli stili. http://www.w3schools.com/tags/tag_div.asp

Anche DIV - MDN

L'elemento HTML (o HTML Document Division Element) è il contenitore generico per il contenuto del flusso, che intrinsecamente non rappresenta nulla. Può essere utilizzato per raggruppare elementi a scopo di stile (utilizzando gli attributi class o id) o perché condividono i valori degli attributi, come lang. Dovrebbe essere usato solo quando nessun altro elemento semantico (come o) è appropriato.

Puoi usare div all'interno del modulo, se stai parlando di usare div invece di table, allora google su Tableless web design


3
veramente? riferimento w3schools?
Adonis K. Kakoulidis

2
@AdonisK., So tutto sul motivo per cui non si dovrebbe includere il riferimento a w3schools, ma credo che non meriti un voto negativo, ti chiederei di vedere questa discussione su Meta: meta.stackexchange.com/questions/120025/… Inoltre ho aggiornato il riferimento di DIV da MDN
Habib

1

Come hanno detto gli altri, va tutto bene, puoi farlo benissimo. Per me personalmente, cerco di mantenere una forma di struttura gerarchica con i miei elementi con un divelemento esterno più genitore. Cerco di utilizzare solo table p ule spanall'interno dei moduli. Mi rende solo più facile tenere traccia delle relazioni genitore / figlio all'interno delle mie pagine web.


0

Ho notato che ogni volta che avrei iniziato il tag del modulo all'interno di un div, i successivi fratelli div non sarebbero stati parte del modulo quando ispeziono (chrome inspect) d'ora in poi il mio modulo non verrà mai inviato.

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

Ho pensato che se inserivo il tag del modulo fuori dai DIV funzionasse. Il tag form dovrebbe essere posizionato all'inizio del DIV genitore. Come mostrato di seguito.

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

-5

Assolutamente no! Verrà eseguito il rendering, ma non verrà convalidato. Usa un'etichetta.

Non è corretto. Non è accessibile. Lo vedi su alcuni siti Web perché alcuni sviluppatori sono semplicemente pigri. Quando assumo sviluppatori, questa è una delle prime cose che cerco nel lavoro dei candidati. I moduli sono cattivi, ma prenditi il ​​tempo e impara a farli correttamente


-8

No non lo è

<div>i tag vengono sempre abusati per creare un layout web. Il suo scopo simbolico è dividere una sezione / porzione nella pagina in modo che sia possibile aggiungere o applicare uno stile separato. [w3schools Doc] [W3C]

Dipende molto da ciò che hai somee another.

HTML5, ha più tag di significato logico, invece di avere tag di layout semplici. Il section, header, nav, asidetutto hanno il loro significato semantico ad esso. E sono usati contro<div>


1
Tendo ad essere d'accordo. Ci sono molte cose che puoi fare all'interno di html. Ma a causa di queste linee guida sciolte è il motivo per cui ci troviamo a scavare fuori dal caos dei layout web presentati con codice pieno di hack. L'unico modo in cui il web può crescere è se continuiamo a seguire le nuove linee guida man mano che ci vengono presentate.
JT Smith

Bene, ho bisogno di un'area sulla pagina web. Gli utenti fanno clic su queste aree e impostano i valori sugli input del modulo. Quale elemento HTML si adatta a questo caso?
demas

1
@demas, Per l'uso della tua definizione si <select>adatta perfettamente se le scelte sono date, se no <a>o <buttons>sono buone.
Starx

27
-1 ti sbagli completamente. OGNI GRANDE SITO usa div all'interno di un form. hai fornito in html 5 esempi che non hanno nulla a che fare con la domanda. mostrami un grande sito che non ha div nel modulo. le persone qui in questo sito rispondono senza controllare e fuorviano gli altri utenti
Royi Namir

4
il modo per non costruire qualcosa è guardare a come il codice aziendale lo ha fatto, di regola. se stai usando solo quei div per contenere testo, se il testo si applica ai controlli del modulo, usa un'etichetta. in caso contrario, utilizzare una p. la semantica è importante. l'accessibilità conta.
albert
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.