• ベストアンサー

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(); }

質問者が選んだベストアンサー

  • ベストアンサー
  • yuchi-co
  • ベストアンサー率60% (29/48)
回答No.4

ボタンのタイプをsubmitにすると、押した時点で送信、更にonclickでsubmit();を呼んでるので2度送信してるんじゃないでしょうか? それと、function名のsubmitは良くないんじゃないでしょうか。もともと、submitというメソッドがあるので。 input type = "button" に変更して、function名を変えたらしっかり動くと思います。

yuki_chan
質問者

お礼

これで、試したら正常に動きました。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

というか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>

noname#25358
noname#25358
回答No.2

 その <INPUT> タグは、本来であれば onclick= がなくてもサブミットは行われるわけです。  なんで、メソッド submit() を実行したあと、さらに本来のサブミットまで実行されてしまっているのです。  多重ポストを防ぐには、onclick="submit(); return false;" に変更してください。  これは……仕様ミス? もしかしたらマイクロソフトがわざとそうしてるのかも。  分かりません。  なお、独自のファンクションに submit() と名前をつけると、もしかしたら this.submit() とゴチャゴチャになるケースがあるかもしれません。  そういうのを防ぐために、もうちょっとユニークな名前にした方がいいですよ。doSubmit() とか。

yuki_chan
質問者

お礼

貴重な技術アドバイスありがとうございます。

noname#45950
noname#45950
回答No.1

ページのどこかに、画像を貼っていませんか? 参考URL18,19,20Pを見てみてください。

参考URL:
http://www.seshop.com/book/preview/200112/4-7981-0045-5-serverJava.pdf
yuki_chan
質問者

お礼

返事が来ないと思ったら、メールオフで質問したようで、早速調べます。

関連するQ&A

専門家に質問してみよう