35140


formタグはどんな時につけるのでしょうか？inputがあれば必ずつけるわけではないのですよね。  
サーバ側に入力してもらった情報を送る場合はつけるという事でしょうか？

下記のようなチェックボックスを選択してもらう場合はどうなのでしょうか？

[code]

    <p>
        <input id="answer1" type="checkbox" value="1">
        <input id="answer2" type="checkbox" value="2">
    </p>
    
[/code]

<https://dekiru.net/article/12955/>  
を見るとサーバに情報を送ることができるとありますが、サーバに送るためにつけるという事ではなく、つけると送ることが可能になるだけという事なのでしょうか？

するとなおさら区別が難しいです


CC BY-SA 3.0
2017-05-30T12:17:20.383
35131
2017-05-30T22:36:23.820
question
html
formタグはどんな時につけるのでしょうか？


`<form>`要素は`<input>`要素で入力された情報をどこへ送信するかのアドレスを指定したり、送信時のエンコード方法を指定する際に使用します。例えばここStack
Overflowのページであれば、通常の書き込みと右上の検索ボックスとでは送信先が異なるわけで、それぞれの`<form>`要素で指定しています。

また、どの`<input>`を送信するかの範囲指定の意味もあります。例えばここStack
Overflowのページであれば、通常の書き込みに対して右上の検索ボックスの内容を送信する必要はないわけです。


CC BY-SA 3.0
2017-05-30T14:19:29.913
35136
2017-05-30T14:19:29.913
4236
35131
answer


ＨＴＭＬ５日本語訳サイト[form要素](https://momdo.github.io/html5/forms.html#the-form-
element)によると、

> form要素は、処理のためにサーバーに送信できる編集可能な値を表すことができる一部で、フォーム関連要素のコレクションを表す。

とあって、

  * サーバーに（内包するフォームコントロールの内容を）送信可能である。（送らなくてもいい）
  * フォームコントロールのコレクションである。（ひとまとめにしている）

ということですね。  
ＡＰＩの方でみると、

> form . submit() フォームを送信する。
>
> form . reset() フォームをリセットする。
>
> form . checkValidity() フォームのコントロールがすべて有効である場合はtrueを返す。そうでなければfalseを返す。

があって、  
「送信・リセット・バリデーションの総括」ができる。  
ということですね。

ひとくくりになっている例としては、  
（あまり良い例ではないかもしれないけど、）

[code]

    console.log(document.getElementsByName("text1")[0].value);
    console.log(document.form1.text1.value);
[/code]

[code]

    <input name="text1" value="text1" />
    <form name="form1">
     <input name="text1" value="text_1-1" />
     <input name="text2" value="text_1-2" />
    </form>
[/code]

のようにフォーム内のコントロールの名前はフォーム名にぶら下がるってとこですかね。  
つまり同じ名前のinput 要素があってもフォームでくくられているために区別が容易である。  
（これが単独バラバラで同じ名前(機能から同じ名前を付けたいような場合（例えば、名前を入力させたいフィールド名にはname1,name2とかじゃなく単にnameと付けたい）として)だと要素を特定するのが（ひとつめの例でわかるように）やっかいです）

* * *

input 要素を置ける場所については、

リンク先[input要素](https://momdo.github.io/html5/forms.html#the-input-element)によると、

>
[code]

>     この要素を使用できるコンテキスト：
>     　　フレージングコンテンツが期待される場所。
>  
[/code]

となっていて、フレージングコンテンツとは、いわゆるテキストが書けるような、インライン要素を置ける場所です。  
つまり親要素は別にform要素でなくても構いません。（formとは別に独立して使用可）


CC BY-SA 3.0
2017-05-30T21:47:01.940
35140
2017-05-30T22:36:23.820
2017-05-30T22:36:23.820
5044
5044
35131
answer