- PR -

更新処理などの二重起動防止方法を教えて下さい

1
投稿者投稿内容
たけくん
ベテラン
会議室デビュー日: 2003/08/19
投稿数: 63
投稿日時: 2004-02-13 11:46
検索や、更新ボタンを押した際に、二重チェックを防止する方法を教えていただきたいです。
よくHPで、更新ボタンや送信ボタンを押すところに、二回押さないで下さいとのメッセージがありますが、これは二重起動を防止するロジックがないわけですが、きちんと二重起動を防止する方法を教えていただきたいと思います。
連続押下できなくするため、クライアント側で、JavaScriptで書くことになるのでしょうか。この場合どのような処理を行えば良いのでしょうか?

また、.NETには二重起動を防止する方法が備わっているのでしょうか?

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-13 11:52
 この手のスレッドはすでに2つ3つあるんですけどね。

・サーバ側で「前回」の時間を記録しておいて、一定時間以内に次のリクエストがあれば無視する
・JavaScriptで、送信ボタンをdisabledにしてからsubmitする
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-02-13 12:01
NAL-6295です。

ボタンのonClickイベントに、

コード:
if(!IsReadyState()) return false;



と書くと良かったりします。

念のためにいいますが、クライアントサイドスクリプトの話です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-13 12:10
引用:

NAL-6295さんの書き込み (2004-02-13 12:01) より:

ボタンのonClickイベントに、
コード:
if(!IsReadyState()) return false;


と書くと良かったりします。


質問!!Validatorが配置されているときは?


勝手にonclickに追記されてしまうので、

onclick="if(!IsReadyState()) return false;if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();"

みたいなことになってしまう・・・
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-02-13 12:27
この手の話の時にいつも思うんですが、更新後の画面で「F5」を押されたときを
考えると、結局サーバ側でチェックするしかないのかなぁって考えています。

(Jittaさんの例でいうと、1つ目の『サーバ側で「前回」の時間を記録しておいて、一定時間以内に次のリクエストがあれば無視する』の類ですね)

以上、蛇足かもしれませんが・・・
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-02-13 13:07
引用:

Jittaさんの書き込み (2004-02-13 12:10) より:
引用:

NAL-6295さんの書き込み (2004-02-13 12:01) より:

ボタンのonClickイベントに、
コード:
if(!IsReadyState()) return false;


と書くと良かったりします。


質問!!Validatorが配置されているときは?


勝手にonclickに追記されてしまうので、

onclick="if(!IsReadyState()) return false;if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();"

みたいなことになってしまう・・・



IsReadyState()の結果がFalseの時のみreturnしているわけで、
trueの時は後ろに流れるから、大丈夫なのではないでしょうか。

#って意図を外していたらすいません。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-02-13 13:17
引用:

NAL-6295さんの書き込み (2004-02-13 13:07) より:

IsReadyState()の結果がFalseの時のみreturnしているわけで、
trueの時は後ろに流れるから、大丈夫なのではないでしょうか。


 あ、そうか・・・VB.NETに侵されている・・・
#いや、Cの頃から間違いの元ではありますが…
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2004-06-11 12:36
今更ですが・・・

IsReadyState()で、できるわけが無く・・・。
#そんなの、存在しないし・・。

コード:
function IsReadyState()
{
	if(window.document.readyState != null&&window.document.readyState != 'complete')
	{
		return false;		
	}else{
		return true;		
	}
}



といった、functionを実装する必要があります。

#んー、当時、寝ぼけてたのかな・・・。自分。
1

スキルアップ/キャリアアップ(JOB@IT)