- ベストアンサー
submitするとなぜか2度実行する
以下のようなコーディングすると、IE6では2度POST?しているように見えます。Netscape7.1では、1度実行です。なぜ、IE6で2度実行? <INPUT type="submit" value=" 登録 " onclick="submit();"> function submit() { document.forms['sisaku'].test.value = "OK"; document.forms['sisaku'].submit(); }
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ボタンのタイプをsubmitにすると、押した時点で送信、更にonclickでsubmit();を呼んでるので2度送信してるんじゃないでしょうか? それと、function名のsubmitは良くないんじゃないでしょうか。もともと、submitというメソッドがあるので。 input type = "button" に変更して、function名を変えたらしっかり動くと思います。
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
というかsubmitボタンのonclickでsubmitしてるのは どうかと思いますが・・・ 普通はformにonSubmitで追加作業をさせ trueをreturnするとsubmitが実行されます。 <script language=javascript> function submitFunc(f) { f.test.value = "OK"; return true; } </script> <form name="sisaku" action="hogehoge.cgi" method="post" onclick="return submitFunc(this);"> <input type="submit" value="登録"> <input type="hidden" name="test" value=""> </form>
その <INPUT> タグは、本来であれば onclick= がなくてもサブミットは行われるわけです。 なんで、メソッド submit() を実行したあと、さらに本来のサブミットまで実行されてしまっているのです。 多重ポストを防ぐには、onclick="submit(); return false;" に変更してください。 これは……仕様ミス? もしかしたらマイクロソフトがわざとそうしてるのかも。 分かりません。 なお、独自のファンクションに submit() と名前をつけると、もしかしたら this.submit() とゴチャゴチャになるケースがあるかもしれません。 そういうのを防ぐために、もうちょっとユニークな名前にした方がいいですよ。doSubmit() とか。
お礼
貴重な技術アドバイスありがとうございます。
ページのどこかに、画像を貼っていませんか? 参考URL18,19,20Pを見てみてください。
お礼
返事が来ないと思ったら、メールオフで質問したようで、早速調べます。
お礼
これで、試したら正常に動きました。