これはしばらくの間私を悩ませています。断続的にフォームのコンテンツを2回送信していたページを発見しました。簡略化のために、入力はテキストフィールドとボタンです。さらに調べると、テキスト入力とボタン入力が1つのフォーム提出に含まれていて、もう1つの提出でテキスト入力のみが送信されていることがわかりました。HTMLフォームsubmit POSTS入力ボタン/値を送信します。 JavaScriptフォームの送信はしません
トラブルシューティングのためのテストページをセットアップしました。私はそれをjsfiddleに載せましたが、FiddlerのようなHTTPプロキシツールを使って渡された値を見ることができないので、あまり助けになるとは思えません。
https://jsfiddle.net/9xL5w9t2/
<form method="post" action="www.google.com" onsubmit="alert('form submitted');" id="form1" name="form1name">
<input type="submit" value="submit form" id="submitbtn1" name="submitbtn1name" />
<input type="text" id="text1" value="123" name="text1name" />
</form>
<form method="post" action="www.google.com" onsubmit="alert('form submitted');" id="form2" name="form2name">
<input type="button" value="submit form" onclick="alert('button clicked to submit form'); document.form2name.submit();" id="submitbtn2" name="submitbtn2name" />
<input type="text" id="text2" value="123" name="text2name" />
</form>
<form method="post" action="www.google.com" id="form3" name="form3name">
<input type="button" value="submit form" onclick="alert('button clicked to submit form'); document.form3name.submit();" id="submitbtn3" name="submitbtn3name" />
<input type="text" id="text3" value="123" name="text3name" />
</form>
<form method="post" action="www.google.com" onsubmit="alert('form submitted'); this.submit();" id="form4" name="form4name">
<input type="submit" value="submit form" id="submitbtn4" name="submitbtn4name" />
<input type="text" id="text4" value="123" name="text4name" />
</form>
フォーム1:テキスト、ボタン
フォーム2提出:テキスト
フォーム3を送信しは:二回送信し:テキスト
フォーム4を送信します。 1)テキストを送信する2)テキストとボタンを送信する
外観から、HTMLフォーム送信を使用して送信すると、テキストとボタン入力が送信されます。しかし、JavaScriptを使用してフォームを送信すると、テキスト入力だけが送信されます。ボタンなし。
この現象の説明は何ですか? JavaScriptフォームが送信テキスト入力のみを送信するのはなぜですか?HTMLフォーム送信はテキスト入力とボタン入力の両方を送信します。
これは仕様です。もしそうなら、理由は何でしょうか?あなたのHTMLパーサーがボタン値を送信するのに矛盾しているようですが、あなたのJSエンジンはそうではありません。
ありがとうございました。
あなたは20個の送信ボタン以外のフォームを作成することができ、送信されたボタンだけが送信されます。あなたの4番目の例では、論理的に言って、 "このフォームが提出されたら、もう一度それを提出してください。 – Billbad