フォームの中にボタンがあります。このようにJavaScriptでフォームを送信する場合の違いは何ですか
<button onclick="document.forms[0].submit();">
このように提出すると
<button type="submit"></button>?
最初のものは、Webkitベースを除くほとんどのブラウザーで機能します。後者も問題なく動作します。機能の違いは私には明らかではありません。ありますか?
フォームの中にボタンがあります。このようにJavaScriptでフォームを送信する場合の違いは何ですか
<button onclick="document.forms[0].submit();">
このように提出すると
<button type="submit"></button>?
最初のものは、Webkitベースを除くほとんどのブラウザーで機能します。後者も問題なく動作します。機能の違いは私には明らかではありません。ありますか?
最初の例:
<button onclick="document.forms[0].submit();">
...2つのことを行います:
onclick
を送信します。forms[0]
type
属性が指定されていないボタンはデフォルトで送信ボタンになるため、(フォーム内にある場合は)フォームを送信します。この2段階の二重送信動作は、次の簡単で汚いデモで見ることができます:http: //jsfiddle.net/fMwuX/(そして、デバッグを少し混乱させるかもしれない奇妙な動作につながる可能性があります)。ボタンが実際にフォームにない場合、これは問題になりません。
2番目の例:
<button type="submit"></button>
フォームを送信するだけです(フォームが1つある場合)。
私の意見では、2番目のオプションは、次のようないくつかの理由で間違いなく望ましいと思います。
forms[0]
。javascriptの例では、HTMLドキュメントの最初のフォームを送信し、2番目の例ではそのボタンをラップするフォームを送信します。
documents.forms[0].submit
HTMLページの最初のフォームの送信をトリガーします。確かに、documents.forms
あなたの文書のすべての形式が含まれています。名前属性またはインデックスを使用してアクセスできます。
次に、フォームにタイプを入力するsubmit
と、親フォームの送信がトリガーされます。
あなたが発見したように、最初のものはある状況でページが機能しないようにします、そして-これと他の理由のために-一般的に悪い習慣と考えられています。2番目を使用します。