ワシがメンテしてるASP.NETのアプリケーションでボタンをクリックしてデータを登録する際に、「ダブルクリックすると2重登録されるから何とかしてくんない?」と突っ込まれまして(まぁ、そんなこともしてなかったんですわ)、「どうすればスマートにできるんだ?」と思って調べてみた。
サーバサイドでの処理には手を入れたくないので(めんどくせーもん)、クライアントサイドであるJavaScriptで実装する方向で調査。ググったらすぐに見つかった。見つかった場所は、@ITの会議室。関連したスレッドは以下のもの。
で、ワシが拝借させてもらった方法を以下にまとめておきやす(上の一番下のスレッドにほとんど書いてます)。
<script language="javascript"> <!-- function send_check() { if (window.document.readyState != null && window.document.readyState != 'complete'){ alert("前回の処理中です。"); return false; }else{ return true; } } // --> </script>[*.aspx]ファイルにJavaScriptとして上記のコードを追加。
Entry.Attributes["onclick"] = "if(!send_check()) return false;";上記のコードビハインド[*.aspx.cs]のPage_Loadに上記のコードを追加。
この場合、Validationを使っているとページが生成されたときにボタンのonclickの中身が
if(!send_check()) return false;if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();
のようになりますが、ダブルクリックされた時以外はreturnしないでそのまま後ろに処理が流れるので問題ないです。はぁ、みなさん頭いーなーっと感心させられた。ワシはパクっただけ(´▽`*)アハハ
そういえば、JavaScriptと言えば、Googleが提唱している「AJAX」とかいうのがあったなぁ。
AJAXで作られているらしいGoogle Maps、昨日この記事を見て気になっていじってて、右上の「Satellite」で衛星写真に切り替えて、日本に移動。改めて衛星写真で見て思ったことは、「すげー溝だ・・・」ってことだった。
しっかし、、ワシの雑記には一貫性ってものがねーなー (;´Д`)テキトウジャァ~
コメント