<input type = 'submit' />と<button type = 'submit'> text </ button>の違い


148

それらについて多くの伝説があります。真実を知りたい。次の2つの例の違いは何ですか?

  1. <input type='submit' value='text' />

  2. <button type='submit'>text</button>


29
あなたが意味するか<input type="submit"><button type="submit">
kennytm 2010


1
inputvoid要素です。使用しないでください<input />、ちょうど使用<input>
CDT 2017

@HakanFıstık、それの重複ではありません、それは(多かれ少なかれ微妙に)異なるものです。たとえばtype=submitbuttonそこには問題さえありませんでした。その他の質問が尋ねられたとき)。
Sz。

回答:


120

どこから伝説を手に入れるかはわかりませんが:

送信ボタン <button>

同様に:

<button type="submit">(html content)</button>

IE6はこのボタンのすべてのテキストをタグの間に送信し、他のブラウザは値のみを送信します。を使用する<button>と、ボタンのデザインよりもレイアウトの自由度が高くなります。すべての意図と目的において、最初は優れているように見えましたが、さまざまなブラウザの癖により、使用が困難な場合があります。

あなたの例では、IE6はtextサーバーに送信しますが、他のほとんどのブラウザーは何も送信しません。ブラウザ間の互換性を持たせるには、を使用します<button type="submit" value="text">text</button>。さらに良いのは、値を使用しないことです。HTMLを追加すると、サーバー側で受信する内容がかなりトリッキーになります。代わりに、追加の値を送信する必要がある場合は、非表示フィールドを使用してください。

ボタン付き <input>

同様に:

<input type="button" />

デフォルトでは、これは何もしません。フォームを送信することすらありません。ボタンを使用してテキストを配置し、CSSを使用してボタンにサイズと境界線を付けることができます。その元の(そして現在の)意図は、サーバーにフォームを送信する必要なしにスクリプトを実行することでした。

通常の送信ボタン <input>

同様に:

<input type="submit" />

前者と同様ですが、実際には周囲のフォームを送信します。

画像送信ボタン <input>

同様に:

<input type="image" />

前者(送信)と同様に、フォームも送信しますが、任意の画像を使用できます。これは、フォームの送信が必要なときに画像をボタンとして使用するための好ましい方法でした。より制御するために、<button>が使用されます。これはサーバー側のイメージマップにも使用できますが、最近では珍しいことです。あなたが使用する場合usemap-attributeおよび(またはその属性なし)を、ブラウザがサーバにマウスポインタがX / Y座標を送信します(より正確には、一瞬のボタン内部のマウスポインタの位置は、あなたがそれをクリックしてください)。これらの追加機能を無視するだけで、画像に偽装した送信ボタンに過ぎません。

ブラウザ間には微妙な違いがありますが、<button>上記で説明したタグを除いて、すべてが値属性を送信します。


1
とにかく編集しているので、IE6のポイントは、互換モードのIE11でも同じです。(quirksモードを使用しないもう1つの理由)。Edgeでも修正されました。ああ、<input>と<button>の違いはもっとあります:<input>にはwhite-space:preデフォルトであり、<button>にはありません。これは、ビューポートよりもボタンを広くしようとすると明らかになります。
リスター氏、

19

では<button>、imgタグなどを使用できます。

<button type='submit'> text -- can be img etc.  </button>

<input>タイプ、あなたはテキストに限定されています


<input type="image" />あなたがテキストに限定されるものではなく、それはまた行って提出します。
Abel

2
@Abel:イメージマップを作成して、マウスポインターの位置name.xname.yパラメーターとして送信します(nameパラメーターが存在しないことに注意してください!)。<input type="submit">唯一の目的が背景画像付きのボタンを作成することである場合は、CSS背景を使用したいと思います。
BalusC 2010

@BalusC:真ですが、HTML 2.0標準を作成した時点で、CSSが存在しない場合の目的は、説明のとおり、画像をボタンまたはサーバー側の画像マップとして使用することでした。しかし、実際には、背景画像付きの通常のボタンを(ab)使用して、CSSおよびHTMLで同じことを行うことができます。
Abel

@Abel:それはの意図ではありませんでしたinput type="image"。そのために<button type="submit">意図されています。
BalusC 2010

1
@BalusC:おそらく標準を別の方法で理解していますが、これはリーのHTML 2.0標準の元のテキストにあります:TYPE=IMAGE' implies TYPE = SUBMIT '処理、つまり、ピクセルが選択されると、フォーム全体が送信されます。」。それを本当の意図だと思ってください:)
Abel

1

要約すれば :

<input type="submit">

<button type="submit"> Submit </button>

デフォルトでは、どちらも同じアクションを実行するボタンを視覚的に描画します(フォームを送信します)。

ただし、<button type="submit">セマンティクスが向上し、ARIAサポートが向上し、スタイル設定が容易になるため、使用することをお勧めします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.