- PR -

二度押し禁止処理について(DHTML編)

投稿者投稿内容
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2006-07-07 17:36
いつも大変参考にさせてもらっております。
ASP.NET 1.1 VB でWebアプリを作成しております。
今回、お聞きしたいのはボタンの二度押し禁止処理についてです。
ボタンの二度押しを避けるために色々と調査をしていました。
下のスレッドで
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11989&forum=7
二度押しを避ける方法は見つかったのですが、できればボタンを押した瞬間に、ボタンを使用不可(disabledをtrue)にして処理が終了したらボタンを使用可能(disabled=false)にするといったことをしたいのです。購入したMicrosoftの書籍にはDHTMLを使用して実現できると書いてあるのですが、実現方法の記述なし・・・。
結局、実現方法が分かりません。
よろしくご教授ください。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2006-07-07 19:07
検索サイト(Googleとか、Googleとか、Google)で、「javascript」 「二度押し」で検索してみたら
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-07-07 19:24
ボタンの ID を getElementById で探して、 object.disabled = true; じゃないかな?

JavaScript 切られていたらできないけど、その辺は良いよね?
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2006-07-07 19:40
かずくんさん、jittaさんありがとうございます。お二人の言われることはよく分かります。1回目の私の質問が説明不測でした。申し訳ありません。
現在、次の実装をしています。

1.フォームロードの際にButton1が押された際にButton1のdisabledをtrueにする
Me.Button1.Attributes.Add("onclick", "Button1.disabled = true; ")

▼問題点
・1をした後、vb側のButton1の処理が実行されなくなる。
・vb側のbutton1のClickイベントが終了したのを判断してButton1.disabled = falseにするタイミングが分からない。
(ある時間がたった後にButton1.disabledをfalseにする方法なら次のような方法で簡単にできると思いますが、
http://www.ahref.org/hinagata/nidoosi.html
vb側のButton1の処理が終了したのを判断してdisabledをfalseにする方法はないのでしょうか?)

よろしくお願いいたします。
未記入
ベテラン
会議室デビュー日: 2003/06/26
投稿数: 76
投稿日時: 2006-07-07 20:17


[ メッセージ編集済み 編集者: 未記入 編集日時 2007-01-19 21:53 ]
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-07-07 20:58
> ・1をした後、vb側のButton1の処理が実行されなくなる。
> ・vb側のbutton1のClickイベントが終了したのを判断してButton1.disabled = falseにするタイミングが分からない。

何もしなけりゃButton1のdisabledはfalseになると思うけど。。。
button1のClickイベントってJavaScriptで記述されたイベントじゃないですよね。
PostBackしてサーバ側で処理を行ってるんですよね。
じゃ、サーバ側の処理が終わったら次はどうなります?

#サーバとクライアントのどこでどんな処理が動いているのか整理してみましょう。

というか、最初に提示されてるスレッドの内容試してみたらわかると思うけど。
頭の中で考えてるだけなのかな?


[ メッセージ編集済み 編集者: どっとねっとふぁん 編集日時 2006-07-07 21:00 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-07-08 06:45
引用:

カタナさんの書き込み (2006-07-07 19:40) より:

1.フォームロードの際にButton1が押された際にButton1のdisabledをtrueにする
Me.Button1.Attributes.Add("onclick", "Button1.disabled = true; ")

▼問題点
・1をした後、vb側のButton1の処理が実行されなくなる。
・vb側のbutton1のClickイベントが終了したのを判断してButton1.disabled = falseにするタイミングが分からない。
(ある時間がたった後にButton1.disabledをfalseにする方法なら次のような方法で簡単にできると思いますが、
http://www.ahref.org/hinagata/nidoosi.html
vb側のButton1の処理が終了したのを判断してdisabledをfalseにする方法はないのでしょうか?)


 何が問題なんだろうと思っていたら、そりゃ、そうだ。
 サーバで実行されるコードと、クライアントで実行されるコード、2つの実行場所があります。自分のコードがどちらで実行されるものか、よく考えてください。

 先に「DHTMLを使用して実現できると書いてあるのですが」と書かれていますが、この返答内容を見る限り、DHTML がなんなのか、理解されていないように思います。


<input type="submit" id="postButton" onclick="return beforePost(this);">
<script>
function beforePost(sender) {
sender.disabled = true;
return true;
}
</script>
↑こんな HTML ができるようにする
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-07-08 11:25
コード:
クライアント      サーバ
  |→→→→→→→→→→|リクエスト
  |←←←←←←←←←←|レスポンス
  |          |
  |ボタン→→→→→→→|処理開始
  |obj.disabled=true  |VB.NET コードの、OnClick
  |この間は、     |
  |2 度押し防止中   |
  |          |
  |          |
  |←←←←←←←←←←|レスポンス(イベントハンドラ終了)
  |obj は上書き
  |されているので
  |再び押せる

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