• ベストアンサー

1つのform内に2つのsubmitボタンがあり、action属性がそれぞれで異なる場合

一般的な検索画面で、中身はjavaで作っているのですが、 検索して結果が下に一覧で表示され、個々の結果ごとに「修正」「削除」ボタンを作っております。 結果1つを1formとして囲っておりまして、hiddenに一意に識別できるパラメータをvalueを入れて飛ばして、その結果情報を修正できたり削除できたりする機能を作っております。 修正ボタンをクリックした場合と削除ボタンをクリックした場合で呼ばれるServletが異なるのですが、うまくJavascriptを書けておりません。 以下はソースです。ちなみにこの要素の上に検索ボタンがあり、現在の挙動だとなぜか検索条件入力フォームチェック用のJSが呼ばれてしまっております。FireFoxのプラグインに表示されるエラーには何もでませんでした。 *****JSP(view)側***** <form method="post" onSubmit="return callServlet(this)" id="mstSearchR" name="mstSearchR"> <input type="hidden" id="mdNoH" name="mdNoH" value="???????" /><br> <input type="submit" id="modify" name="modify" value=" 変更 " /> <input type="submit" id="delete" name="delete" value=" 削除 " /> </form> *****JS側***** function callServlet(caller){ caller.modify.onsubmit = function(){ flagD = this.form.modify.disabled; flag = confirm("修正しますか?"); if(flag == true){ flagD = !flagD; this.form.modify.disabled = flagD; this.form.action = "????????????????" return true; } return false; } caller.delete.onsubmit = function(){ flagD = this.form.delete.disabled; flag = confirm("削除しますか?"); if(flag == true){ flagD = !flagD; this.form.delete.disabled = flagD; this.form.action = "!!!!!!!!!!!!!!!!" return true; } return false; } }

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

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

FormのonSubmitイベントではなく、Buttonのオンクリックイベントにしてはどうでしょうか。 submitを使うのではなくbutton属性に変えて、各Function内で this.form.submit(); を実行してあげれば問題ないとおもいます。 --- <form method="post" id="mstSearchR" name="mstSearchR"> <input type="hidden" id="mdNoH" name="mdNoH" value="???????" /><br> <input type="button" id="modify" name="modify" value=" 変更 " onSubmit="return callServlet(this)" />  <input type="button" id="delete" name="delete" value=" 削除 " onSubmit="return callServlet2(this)" /> </form> --

noname#256392
質問者

補足

Mizyuさま ご回答いただきありがとうございます。 buttonにしてonClickで引数をthis.formにして関数読んで、function内でsubmit()をしたら見事に仕様通り機能いたしました。 大変助かりました。ありがとうございました!

その他の回答 (1)

noname#49428
noname#49428
回答No.2

input要素には、onsubmitイベントはないので、 modify/deleteにonsubmit関数を宣言しても意味はないですね。 あと、formのonsubmitイベントでこれらの宣言をしてるのも意味不明です。 なぜ、このようなコードになったのかが謎です。 どこからかコピってきたのでしょうが、使用方法が間違ってます。 また、ひとつのform内に複数のsubmit要素があるのも好ましくないですね。 こういう場合は、button要素にすべきです。

参考URL:
http://w3g.jp/xhtml/dic/onreset
noname#256392
質問者

補足

texjoyさま はい、たぶんコピペのままであったのだと存じます。 このコードは自分で勝手に書いてしまったものなので、スキルの低さが露呈した形になりました。 > また、ひとつのform内に複数のsubmit要素があるのも好ましくないですね。 > こういう場合は、button要素にすべきです。 こちら、今後肝に銘じてコーディングいたします。 ご回答いただき、誠にありがとうございます。

関連するQ&A

専門家に質問してみよう