[〜#〜] update [〜#〜]From @ BrendanEich
送信の@mplungjanonclickは、ボタンであることから外れます。フォームの送信は明らかに優れています。
フォームを送信する必要があるかどうかを判断するために送信ボタンのonclickを使用する理由はどれですか?
私はそれを強く信じています
フォームのonsubmitよりも送信ボタンのonclickイベントを使用することを好む強い理由を探しています。
更新:フォームの送信と検証に関する問題の多くを個人的によく知っていることに注意してください。
たとえば、javascriptで送信しても、onsubmitはトリガーされません http://jsfiddle.net/mplungjan/3A4Ha/
<form onsubmit="alert('onSubmit called')">
<input type="text" value="This will submit on enter but in IE the onclick is not triggered" style="width:100%"/><br/>
<input type="submit" onclick="alert('Clicked')" />
</form><br />
<a href="#" onclick="alert('Submitting by script'); return false">Submit by script will not trigger onsubmit</a>
また、私のフィドルのフォームでEnterキーを押しても、IEはonclickをトリガーしません
歴史:
ここで議論に入った
manyが原因で、送信ボタンのonclickを何にでも使用することを強く嫌います。1 これが多くのブラウザ、主に古いバージョンのIEで機能しないことを何年も見てきました。明らかな理由をいくつか挙げましたが、それらは強化されたユーザーを納得させるものではないと確信しています。
SOのコミュニティは、w3schoolsを釘付けにしたように、これを壁に釘付けにするのを手伝ってくれますか?また、この質問を許容できる方法で表現する方法についても、遠慮なくコメントしてください。
1:NS2.xおよびIE3.02の時代から
フォームの送信は、送信ボタンをクリックするだけでなく、<ENTER>
キーを使用してフォームを送信できるという単純な理由から、より正確なアプローチです。
ボタンのonclickハンドラーよりもfromのonsubmitハンドラーを使用する直接的な理由はありません。意図に応じて名前付きイベントを使用する必要があります。
「送信」アクション(「電子メールを送信する」など)と「保存」(「ドラフト」など)の2つのアクションがあるシナリオを検討できます。前者のアクションは、一貫した方法でフォームに入力されることを前提としていますが、後者のアクションでは、ユーザーが好きな状態を維持できるようにする必要があります。そのため、クリックハンドラーは、検証とキャンセルを決定するのに理想的な場所になります。この場合の送信イベントの関連性は未定です。
問題をさらに複雑にするために、シナリオに自動保存と楽観的同時実行性を追加することができます。
IMHO何年にもわたる試行錯誤の結果、HTML5標準はボタン要素を支持して質問を決定しました。各ボタンでフォームのアクション、メソッドを個別に変更できるボタンの[form *]属性を参照してください。