
お世話になります。
以前開発したVB.NETのアプリケーションでボタン(submit)を連打すると「ページを表示できません。現在、多数の人が Web サイトにアクセスしています。」という現象が出てその対応策を考えています。
実際にはボタンのクリック連打ではなく、ボタンにフォーカスを当ててキーボードのリターンキーを押しっぱなしにするとリクエストが何度もサーバーへ送られて上記のような現象となります。
対応策としてボタンが押された瞬間にJavaScriptでフラグをONにし、そのフラグがONである間は次のJavaScript:onClickイベントをreturn falseするような作りとしてみました。
ボタンは何個かあり、submit後の処理に時間が掛かるもの(情報検索)はそれで対応できたのですが比較的応答が早い処理(検索条件フォームのクリア機能)ではやはり同様のエラーとなってしまいます。
JavaScriptを使い、ボタンそのものを無効化(form.ボタン名.disabled = false)を試みましたが.netの場合はボタンを無効化させるとサーバーサイド(VB)でのpage_load処理が止まってしまうようで無応答となります。
押した瞬間にボタンを無効化させて見た目にも押した状態を表現できるのが一番好ましいのですが、連打を防止しつつボタンを無効化させる方法は無いでしょうか?
また、ボタン無効化は無理としても他に連打の対応策がありましたらご教示願えたらと思います。
No.1ベストアンサー
- 回答日時:
submit属性のボタンは作らずに
ボタンにonmouseupイベントを割り当て
submitを呼び出すか
bodyにkeyupイベントで
submitを呼び出すようにしてはどうでしょうか
アドバイスありがとうございます。
なるほど、submitならばいきなりpostされますがボタン押下のイベントをフックすることにより処理が分岐できますね。
実は質問を投稿した直後に思いついてやったことが、ボタン押下直後にそのボタンのフォーカスを外すという事でした。
document.form.buttonName.blur();とすることによりボタンからフォーカスが外れて、連打する事はなくなりました。
ご回答とは違う結果で解決しましたがとても参考になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBAでオプションボタンによって...
-
閉じると「+」になり開くと「-...
-
VBA(エクセル)で自動的にボタン...
-
Excel VBA Application.caller...
-
VB.NET テキストボックスの入力...
-
ボタンをマウスで押し続けたと...
-
MouseDownとMouseMoveイベント...
-
セルをマクロのボタンにしたい。
-
バックスペース機能の作り方
-
ユーザーフォームに別シートか...
-
VBでのエラー音の消し方
-
テキストボックスの中身消去
-
コマンドボタンやイメージにマ...
-
senderに含まれているハンドル...
-
VBAのボタンの位置が変わって困...
-
チェックボックスで指定出来る...
-
エクセルVBAでユーザーフォーム...
-
VBA CommandButtonの文字ずれ
-
フォームから別のフォームを呼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
[VB.net] ボタン(Flat)のEnable...
-
コマンドボタンやイメージにマ...
-
VBAのボタンの位置が変わって困...
-
VB.net でトグルボタンを実現し...
-
フォームの再読み込み
-
閉じると「+」になり開くと「-...
-
アイコンとボタンの違い
-
ボタン
-
Access VBA でデータペーストを...
-
セルをマクロのボタンにしたい。
-
C#プログラムで、ボタンをショ...
-
ユーザーフォームに別シートか...
-
Excel マクロ 閉じるボタン
-
VBAで多数のプログラムを一つの...
-
ボタンをマウスで押し続けたと...
-
ASP.Net ラベルの内容をすぐに...
おすすめ情報