• ベストアンサー

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

  • javascript submit()の後の動作

    scriptはjsファイルで分離しています。 送信ボタンをクリックした場合の動作は期待通りの動作をしています エンターキーを押したときの動作が、フォームの送信は正常に実行されるのですが、 document.getElementById('ctxt').value= '';が実行されません。 その後、試しにアラートも入れてみましたけど、動作していないようです document.forms[txt_submit].submit();の後の部分が実行されるようにするにはどうしたらいいのでしょうか? function Key_on(){ if(window.event.keyCode == 13){ document.forms[txt_submit].submit(); document.getElementById('ctxt').value= ''; alert('ん?'); } } function send(){ document.txt_submit.submit(); document.getElementById('ctxt').value= ''; } ----------------- <form id="txt_submit" name="txt_submit" action="log.cgi" method="post" target="log" autocomplete="off"> <input type="text" id="ctxt" name="ctxt" size="20" value="" onkeydown="Key_on()"> <input type="button" value="送信" onclick="return send();"> </form>

  • submit()で送れない

    <SCRIPT language="JavaScript"> <!-- function send55() { document.frm.aaa.value = "送る内容"; document.frm.submit(); } //--> </SCRIPT> <A href="JavaScript:void(0)" onclick="send55()">ここをクリック</A> <FORM name="frm" method="POST" action="test.php"> <input type="hidden" name="aaa"> </FORM> 上記内容で「ここをクリック」をクリックすると、aaaには"送る内容"がセットされるのですが、続くsubmit()が動作しないようです。 試しに<FORM>タグ内に以下の1行 <INPUT type="submit" name="test" value="送信テスト" > を追加して「送信テスト」ボタンをクリックすると正しくtest.phpが開きます。 使い方を間違っていますでしょうか? ご指導よろしくお願いします。

  • Firefox:JavaScriptのsubmit

    JavaScriptで、以下のようにsubmitしていますが、 IEではOKで、Firefoxでは「送信開始」ボタンで反応がありません。 Firefoxではどのように書けばよいのでしょうか? 以下は、テストのため省略できるギリギリまで省略していますので、意味のないスクリプトになってますが、実際にはJavaScriptで空白個所のチェックのロジックを入れています。 <html> <head> <script language="JavaScript"> <!-- function check1(){ document.FORM1.submit(); } ---> </script> </head> <form action='http://hogehoge.jp' method='post' name="FORM1"> <input type='button' value='送信開始' onClick="check1()"> </form> </body> </html>

  • submit関数の使い方

    javascript部分 function sendform(formname){ document.formname.submit(); } html部分 <form action="test.html" method="post" name="form1"> <input type="text" name="textvalue" value="1"> </form> <a href="javascript:void(0)" onclick="sendform('form1'); return false;">click1</a> <form action="test.html" method="post" name="form2"> <input type="text" name="textvalue" value="2"> </form> <a href="javascript:void(0)" onclick="sendform('form2'); return false;">click2</a> 今は、上記のように書いています。引数でフォーム名を渡し、その値によって送信フォームを変えたいのですがうまくいきません。if文を使って if(formmei=="form1"){ document.form1.submit(); }else if(formmei=="form1"){ document.form2.submit(); } という方法も考えたのですが、フォーム名だけ変えることができないかと考えています。 よろしくお願いします。

  • 複数のsubmitボタンで押されたボタンを取得する方法

    form内の、submitボタンの値が拾えません。 1つだけsubmitボタンを設置すると値が拾えますが、 2つ以上submitボタンを設置すると拾えません。 仕様上、無理なのでしょうか? <SCRIPT language="JavaScript"> function move_post(){ alert(document.frmMvPost.btn.value); } </SCRIPT> <FORM name="frmMvPost" action="" method="post" onsubmit="return move_post()"> <INPUT type="submit" name="btn" value="テスト1"> <INPUT type="submit" name="btn" value="テスト2"> <INPUT type="submit" name="btn" value="テスト3"> </form>

  • Chromeで複数submit

    現在1つのボタンで2つのフォームをsubmitしているのですがGoogleChromeだけ1正常に動作せず困っております。 下記スクリプトでIE、FireFoxはnform、nform2ともにsubmitされるのですがChromeのみnform2(後に記述したほう)のみ実行されます。 解決方法はありますでしょうか? 宜しくお願い致します。 <script language="javascript"><!-- function send() { if(window.confirm('設定してよろしいですか?')){ document.nform.submit(); document.nform2.submit(); }else{   alert('キャンセルしました'); } } //--></script> <form name="nform" action="a.php" target="blank" method="POST"> <input type="hidden" value="a" name="1"> </form> <form name="nform2" action="b.php" method="POST"> <input type="hidden" value="a" name="1"> </form> <button onClick="send()">ボタン</button>

  • IEでのフォームメールで、ENTERキーでのsubmitを動かさないようにしたいのですが。。

    IEでフォームメールを使用したときにENTERキーを押下するとsubmitが動いてしまうのですが、その動きを止める為に 1.送信ボタンは   <input type="button" name="submit" value=" 送信する " onClick="subm()"> で関数subm()で function subm() { document.form1.submit(); } という動きと 2.送信ボタンに<input type="button" name="submit" value=" 送信する " onClick="javascript:document.form1.submit()"> という動きの2つを試してみたのですが、どちらもエラーになってしまいました。 原因がわからないので調べているところですが、もしどなたか他の方法をご存知でしたら、教えていただけませんでしょうか?

  • 二つのform分について

    <form action="./test.cgi" method="POST"> <div>テスト:<input type="text" size="70" name="keyword" value=""></div> <input type="submit" value="OK"> </form> <FORM method="post" action="#"> 外側だけですが、遊んでくださいね16進数で!!!! <INPUT tabindex="10" accesskey="x" value="" name=BGC size=7> <INPUT tabindex="20" accesskey="x" onclick="document.bgColor='#' + document.forms[0].BGC.value" onkeypress="document.bgColor='#' + document.forms[0].BGC.value" type=button value="色変更"> </FORM> どちらも一つずつだと正常に動作します。 何か同じものが二つあるのでしょうか 何かが重複しているので 最初のformは動くけど、 2番目のformが動かないのでしょうね。 どうすれば二つとも動くでしょうか。 よろしくお願いいたします。

  • submitではなくbuttonで送信

    事情があり、submitではなくbuttonでフォームのデータを送信したいのですが、以下のように書くとbuttonでは4567が送信されません。 <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="submit" name="bbb" value="4567"> </form> ↓ <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="button" name="bbb" value="4567" onclick="submit();" > </form> submitと同じように、bbbのデータ4567も送信するにはどのように書けばよいのでしょうか? 宜しくお願いします。

  • エクセル マクロ submitについて

    マクロ超初心者です・・・ エクセルマクロでIEを操作したいのです。 ****エクセルのセルA1が「OK」の場合、以下の処理を実行**** 処理1.セルB1に数値として表示済みのURLを取得してIEを開く。 処理2.開いたIEのtextareaにセルC1の文字を入力。 処理3.submitボタンを押して送信。 ****HTMLは以下の通り(一部省略)**** .1..<form name="directForm" enctype="multipart/form-data" method="post" action="/thr_rp1/"> .2....<input type="hidden" value="120" name="bid"> .3....<input type="hidden" value="3217234" name="tid"> .4....<input type="hidden" value="103" name="ctgid"> .5....<input type="hidden" value="8" name="acode"> .6....<input type="hidden" value="1" name="tp"> .7....<input type="hidden" value="2" name="prof_flg"> .8......<ul class="display inqForm rCate"> .9........<li> 10..........<input id="name" type="text" tabindex="1" maxlength="16" onclick="fun_focus(this)" size="16" value="" name="name"> 11........</li> 12........<li> 13..........<input id="trip" type="text" tabindex="2" maxlength="16" onclick="fun_focus(this)" size="16" value="" name="trip_pass"> 14........</li> 15........<li> 16..........<input id="email" type="email" tabindex="3" maxlength="50" onclick="fun_focus(this)" size="30" value="" name="mailaddr"> 17........</li> 18........<li> 19..........<textarea class="required" required="" tabindex="-1" onkeyup="showCharCnt('resize-demo', 'idCharCnt')" onclick="fun_focus(this)"></textarea> 20..........<textarea id="resize-demo" class="required" required="" tabindex="4" onkeyup="showCharCnt('resize-demo', 'idCharCnt')" onclick="fun_focus(this)" name="body"></textarea> 21........</li> 22........<li> 23..........<input id="delpaass" type="password" tabindex="5" value="" name="del_pass"> 24........</li> 25........<li class="noborder"> 26..........<div class="center"> 27............<input type="submit" tabindex="6" value="送信する"> 28..........</div> 29........</li> 30....</ul> 31..</form> ****//HTML(終)**** 上記のHTMLにもありますように、20行目のtextarea「name="body"」に処理2を実行後、 27行目の「value="送信する"」を押すというマクロを作成したいのです。 いろいろなサイトを参考にさせていただいて、切り貼りをした結果、 次のようなマクロを書きました。 ****マクロ**** Sub test() If Range("A1").Value = "OK" Then Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.Navigate Range("B1").Value '画面へ移動する waitNavigation IE IE.document.All("body").Value = Range("C1").Value ObjIE.document.Forms(0).Submit End If End Sub '画面移動の完了待ち Sub waitNavigation(IE As Object) Do While IE.Busy Or IE.ReadyState < 4 DoEvents Loop End Sub ****//マクロ(終)**** ====私にとっての難題 (+д+;lll )==== 処理1と処理2はクリアできたのですが、処理3がどうしてもうまくできません・・・ 27行目のsubmitにはIDやnameもなく、そういった場合は ObjIE.document.Forms(0).Submit と記述すればいいといろんなサイトに書いてありましたが、 マクロを実行するとエラー(91、424など)が出るばかりで、処理を完了できません。 Ifによって処理3までを実行して、その後はIfに関係なく次のマクロを記述したいのです。 上記のマクロは、詳しい方がご覧になれば「デタラメな書き方」と採点されると思います。 どなたかご教授頂けましたら幸いです。 よろしくお願いいたします。

専門家に質問してみよう