input type="submit"
とbutton
タグは交換可能ですか?または、違いがある場合は、いつ使用しinput type="submit"
、いつ使用しbutton
ますか?
そして、違いがない場合、なぜ同じ目的で2つのタグがあるのでしょうか。
button
value
input
button
input type="submit"
とbutton
タグは交換可能ですか?または、違いがある場合は、いつ使用しinput type="submit"
、いつ使用しbutton
ますか?
そして、違いがない場合、なぜ同じ目的で2つのタグがあるのでしょうか。
button
value
input
button
回答:
http://www.w3.org/TR/html4/interact/forms.html#h-17.5
BUTTON要素で作成されたボタンは、INPUT要素で作成されたボタンと同じように機能しますが、より豊かなレンダリングの可能性を提供します。BUTTON要素にはコンテンツがある場合があります。たとえば、画像を含むBUTTON要素は、「画像」に設定されたINPUT要素と同様に機能する可能性がありますが、BUTTON要素の種類はコンテンツを許可します。
したがって、機能性のみが交換可能です!
(忘れないでください。これtype="submit"
はのデフォルトなbutton
ので、オフにしてください!)
type="submit"
ためには、デフォルトとして、ボタンです。type
submit
type
デフォルトがであるケースを見たことがあると思いますbutton
。ブラウザの不整合を回避するために、各属性を明示することを好みます。
<input type = "button" ..>の代わりに<button>タグを使用します。これは、ブートストラップ3で推奨される方法です。
http://getbootstrap.com/css/#buttons-tags
「クロスブラウザレンダリング
ベストプラクティスとして、可能な場合は常に<button>要素を使用して、ブラウザー間のレンダリングが一致するようにすることを強くお勧めします。
特に、Firefoxのバグがあり、<input>ベースのボタンの行の高さを設定できないため、Firefoxの他のボタンの高さと正確に一致しません。」
button
ははるかに明示的で、aria
アクセシビリティ機能を備えており、スタイルを設定するのがはるかに簡単です。また、HTML5であるため、先進的です。
どちらの要素でも機能的には同じ結果が得られますが<button>
*、以下を使用することを強くお勧めします。
input
コントロールが編集可能であるか、ユーザーが編集できることを示唆しています。button
それが果たす目的の点ではるかに明確ですinput[type="submit"]
、場合によっては正しく表示されない癖がありますPOST
/ GET
リクエストで送信されると、IEは動作を非常に強くします* デフォルトで指定された動作がない場合を除きます。<button type="button">
要約すると、私はの使用を強くお勧めしません<input type="submit" />
。
<input type='submit' />
単一の自己終了タグであるため、内部のHTMLはサポートされていません。<button>
一方、はタグペアであるため、HTMLや画像などを内部でサポートしています<button><img src='myimage.gif' /></button>
。<button>
CSSスタイリングに関しては、より柔軟です。
の欠点は<button>
、古いブラウザでは完全にはサポートされていないことです。たとえば、IE6 / 7では正しく表示されません。
特定の理由がない限り、に固執するのがおそらく最善<input type='submit' />
です。
<input type="submit" value="Log In" />
<button>
何か新しいものを支持して廃止されるでしょう。特定のタグは将来的に変更される可能性があるため、回答で特定のタグについて言及すべきではないということですか?私はそれを読者への演習として残して、答えが彼らの状況にどのように当てはまるかを決定したいと思います。その情報が読者にとって価値がある限り、私はそれを含めることに問題はないと思います。
これは古い質問だと思いますが、mozilla.orgで見つけて当てはまると思います。
ボタンには、送信、リセット、ボタンの3つのタイプがあります。送信ボタンをクリックすると、要素のaction属性で定義されたWebページにフォームのデータが送信されます。
リセットボタンをクリックすると、すべてのフォームウィジェットがすぐにデフォルト値にリセットされます。UXの観点からは、これは悪い習慣と見なされます。
ボタンボタンをクリックしても、何も起こりません。ばかげているように思えますが、JavaScriptを使用してカスタムボタンを作成するのは驚くほど便利です。
<button type="button">
して、スライダー/カルーセルを次のスライドに進めることができます。
<button>
はより新しく<input type="submit">
、よりセマンティックで、スタイル設定が簡単で、HTMLをサポートしています。
他の答えは素晴らしいですし、質問に答えますが、input type="submit"
およびを使用するときに考慮すべきことが1つありbutton
ます。input type="submit"
あなたが使用することはできません入力にCSS擬似要素をしかし、あなたができるボタンのための!
これはbutton
、スタイリングに関して入力よりも要素を使用する理由の1つです。
これがバグなのか機能なのかはわかりませんが、私が見つけた非常に重要な(少なくとも場合によっては)違いがあります。<input type="submit">
リクエストにキーと値のペアを作成しますが、作成<button type="submit">
しません。ChromeとSafariでテスト済み。
したがって、フォームに複数の送信ボタンがあり、どのボタンがクリックされたかを知りたい場合はbutton
、使用せずに、input type="submit"
代わりに使用してください。
について話している場合<input type=button>
、フォームは自動的に送信されません
<button>
タグについて話している場合、それはより新しいものであり、すべてのブラウザーで自動的に送信されるわけではありません。
結論として、すべてのブラウザーでクリック時にフォームを送信したい場合は、 <input type="submit">
<button type="submit">
フォームの自動送信に使用できます。