ダブルクリックによる2重登録防止方法

ワシがメンテしてる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」で衛星写真に切り替えて、日本に移動。改めて衛星写真で見て思ったことは、「すげー溝だ・・・」ってことだった。

しっかし、、ワシの雑記には一貫性ってものがねーなー (;´Д`)テキトウジャァ~

ダブルクリックによる2重登録防止方法

コメントを残す