• 締切済み

.NET(VB)でボタンの連打を防止する方法

お世話になります。 以前開発したVB.NETのアプリケーションでボタン(submit)を連打すると「ページを表示できません。現在、多数の人が Web サイトにアクセスしています。」という現象が出てその対応策を考えています。 実際にはボタンのクリック連打ではなく、ボタンにフォーカスを当ててキーボードのリターンキーを押しっぱなしにするとリクエストが何度もサーバーへ送られて上記のような現象となります。 対応策としてボタンが押された瞬間にJavaScriptでフラグをONにし、そのフラグがONである間は次のJavaScript:onClickイベントをreturn falseするような作りとしてみました。 ボタンは何個かあり、submit後の処理に時間が掛かるもの(情報検索)はそれで対応できたのですが比較的応答が早い処理(検索条件フォームのクリア機能)ではやはり同様のエラーとなってしまいます。 JavaScriptを使い、ボタンそのものを無効化(form.ボタン名.disabled = false)を試みましたが.netの場合はボタンを無効化させるとサーバーサイド(VB)でのpage_load処理が止まってしまうようで無応答となります。 押した瞬間にボタンを無効化させて見た目にも押した状態を表現できるのが一番好ましいのですが、連打を防止しつつボタンを無効化させる方法は無いでしょうか? また、ボタン無効化は無理としても他に連打の対応策がありましたらご教示願えたらと思います。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

submit属性のボタンは作らずに ボタンにonmouseupイベントを割り当て submitを呼び出すか bodyにkeyupイベントで submitを呼び出すようにしてはどうでしょうか

mappy88
質問者

お礼

アドバイスありがとうございます。 なるほど、submitならばいきなりpostされますがボタン押下のイベントをフックすることにより処理が分岐できますね。 実は質問を投稿した直後に思いついてやったことが、ボタン押下直後にそのボタンのフォーカスを外すという事でした。 document.form.buttonName.blur();とすることによりボタンからフォーカスが外れて、連打する事はなくなりました。 ご回答とは違う結果で解決しましたがとても参考になりました。ありがとうございました。

関連するQ&A