FORM内でDIVを使用するのは正しいですか?


86

FORMタグ内のDIVタグについてどう思いますか?

私はこのようなものが必要です:

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

DIV内部で使用するのが一般的な習慣FORMですか、それとも別のものが必要ですか?

回答:


133

それは完全に大丈夫です。

form(また、*のみの入力タイプのコントロールを提出するTextareaSelectなど)。

div内で心配することは何もありませんform


2
div内でフォームを使用するのはどうですか?
キック・ブットウスキー2017年

1
@KickButtowskidiv内のフォームはまったく問題ありません。HTMLバリデーターで自分で試すことができます。その上、最近のページはdivに基づいて構築されているため、最近ではほとんど避けられません。許可されていない場合は、単純なラッパーまたはフォームをコンテナーに配置すると、ページがすでに無効になります。
nrzonline 2017

フォーム内にdivを追加してから、フォームの検証が機能しなくなりました
Suhas 2018

28

<form>タグ内でDIVを使用することは完全に許容されます。

あなたはデフォルトを見れば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>inputいけないのラベルとしてを使用する場合は...labelはるかに優れたオプションです:

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

3

<input>を<form>の直接の子として持つのは誤りです

ちなみに、<input / >は一部のDoctypeで失敗する可能性があります

http://validator.w3.org/checkで確認してください


ドキュメントタイプでは、ここでは要素「INPUT」を使用できません。「P」、「H1」、「H2」、「H3」、「H4」、「H5」、「H6」、「PRE」、「DIV」、「ADDRESS」のいずれかの開始タグがありません

<input type = "text" />

上記の要素は、配置したコンテキストに表示することはできません。他の言及された要素は、そこで許可され、言及された要素を含むことができる唯一の要素です。これは、包含要素が必要なこと、または前の要素を閉じるのを忘れたことを意味する場合があります。

このメッセージの考えられる原因の1つは、ブロックレベルの要素(「<p>」や「<table>」など)をインライン要素(「<a>」、「<span>」など)内に配置しようとしたことです。 "、または" <font> ")。


3

あなたの質問はあなたがDIVタグに何を入れたいかを扱っていません、それはおそらくあなたがいくつかの不完全な/間違った答えを受け取った理由です。真実は、Royiが言ったように、フォーム内にDIVタグを配置できるということです。たとえば、ラベルに対してこれを実行する必要はありませんが、3つの列に配置するチェックボックスが多数あるフォームがある場合は、必ずDIVタグ(またはSPAN、HEADERなど)を使用してください。 。)達成しようとしているルックアンドフィールを達成するため。


3

定義と使用法

タグは、HTMLドキュメントの分割またはセクションを定義します。

タグは、ブロック要素をグループ化してスタイルでフォーマットするために使用されます。 http://www.w3schools.com/tags/tag_div.asp

また、DIV-MDN

HTML要素(またはHTMLドキュメント分割要素)はフローコンテンツの汎用コンテナであり、本質的に何も表していません。これは、スタイル設定の目的で(classまたはid属性を使用して)要素をグループ化するために、またはそれらがlangなどの属性値を共有するために使用できます。他のセマンティック要素(またはなど)が適切でない場合にのみ使用してください。

フォーム内でdivを使用できます。テーブルの代わりにdivを使用する場合は、テーブルレスWebデザインについてグーグルで検索してください。


3
本当に?w3schoolsリファレンス?
アドニスK.カコウリディス2013年

2
@ AdonisK。、w3schoolsへの参照を含めるべきではない理由はすべて知っていますが、反対票を投じる価値はないと思います。Metaでこのディスカッションをご覧ください:meta.stackexchange.com/questions/120025/…また、私はMDNからDIVの参照を更新しました
ハビブ

1

他の人が言っているように、それはすべて良いです、あなたはそれをうまくやることができます。個人的には、div最も外側の親要素である要素を使用して、階層構造の形式を維持しようとしています。だけ使ってみますtable p ulspanフォーム内しています。ただ、私は内部の親のトラック/子供関係を維持するために簡単にそれを作る私のウェブページ。


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

絶対違う!レンダリングされますが、検証されません。ラベルを使用してください。

正しくありません。アクセスできません。一部の開発者は怠け者であるため、一部のWebサイトで表示されます。私が開発者を雇っているとき、これは私が候補者の仕事で最初にチェックすることの1つです。フォームは厄介ですが、時間をかけて適切に行うことを学びます


-8

いいえ、ちがいます

<div>タグは常に悪用されてWebレイアウトを作成します。その象徴的な目的は、ページ内のセクション/部分を分割して、個別のスタイルを追加または適用できるようにすることです。[w3schools Doc] [W3C]

それはあなたsomeanother持っているものに大きく依存します。

HTML5には、プレーンなレイアウトタグではなく、より論理的な意味のタグがあります。sectionheadernavasideすべてがそこに自分のセマンティックな意味を持ちます。そしてに対して使用されます<div>


1
私は同意する傾向があります。HTML内でできることたくさんあります。しかし、これらの緩いガイドラインのために、ハックでいっぱいのコードでテーブル化されたWebレイアウトの混乱を掘り下げていることに気付くのはそのためです。Webを成長させる唯一の方法は、提示された新しいガイドラインに引き続き従うことです。
JTスミス

さて、私はウェブページのいくつかの領域が必要です。ユーザーはこの領域をクリックして、フォーム入力に値を設定します。この場合、どのHTML要素が適合しますか?
demas 2012年

1
@demas、あなたの定義の使用は<select>、選択肢が与えられている場合、そうでない場合、<a>または<buttons>良い場合に最適です。
Starx 2012年

27
-1あなたは完全に間違っています。すべてのビッグサイトは、フォーム内でdivを使用します。あなたは質問とは何の関係もない5つの例をhtmlで与えました。フォーム内にdivがない1つの大きなサイトを見せてください。このサイトの人々は、他のユーザーをチェックせずに答えを投げ、他のユーザーを誤解させます
Royi Namir 2012

4
何かを構築しない方法は、原則として、エンタープライズコードがどのようにそれを行ったかを調べることです。これらのdivのみを使用してテキストを含める場合、テキストがフォームコントロールに適用される場合は、ラベルを使用します。そうでない場合は、pを使用してください。セマンティクスは重要です。アクセシビリティが重要です。
アルバート2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.