Disable On Submit Pluginが1フォームに複数サブミットボタンがある画面で使用できるか教えてください。
二重submit防止として、「jQuery Disable On Submit Plugin | EvanBot」を使用することにしました。
http://neta.ywcafe.net/001046.html
大変便利なのですが、1フォームに複数サブミットボタンがある場合、正しく機能しません。
SAStrutsを使っていて、複数サブミットボタンがある場合、
name属性で、対象アクションメソッドを指定しているのですが、
なぜかDisable On Submit Pluginを使用すると、
name属性は無視されて、formのアクション先にPOSTされます。
(例:action="/XXX"の場合、XXXのindexメソッドが呼ばれます。
>>
フォームをサブミットする場合は、ボタン系のname属性に実行メソッド名を指定します。次の例では、アクションクラスのsubmit()を呼び出します。
<input type="submit" name="submit" value="サブミット"/>
http://sastruts.seasar.org/tutorial.html
<<
コメント(4件)
「jQuery Disable On Submit Plugin」を使用した時、
submitボタンのname属性が消えていました。
これが原因で、indexメソッドが呼ばれていましたと思われます。
なぜ消えるのか?消さないようにする方法はないか知りたいです。
Firebugsの接続パネルで見たところ、
POSTデータのキーが消えてました。(例: submit name="check" とした場合、"check"がPOSTデータに含まれていない)
SubmitをDisableにするとPOSTに含まれない。ということかもしれません。
動的にhiddenにつめる方法とかあれば教えてください。
該当の記事のコメント欄にも同様のことが示唆されており、nemutaiyoさんもお気づきのとおりです。
submitボタンをdisableにするということは、submitボタンのname属性もvalue属性もPOSTされません。disableにする、ということはそういうことだからです。
つまり、submitボタンdisable化手法は、SAStrutsとは相性が悪いのです。二度押し防止には他の手段を考えたほうがよいとおもいます。
submitボタンのname/value属性値を自動的にhiddenに詰め替えることも、このjQueryプラグインを改造すれば可能でしょうが、やはりsastruts側でそれをどう受け取るか?(Actionクラスのどのメソッドに受け渡すのか)というところで問題になってしまう気がします。