1度クリックしたボタンを無効にするには?

[上に] [前に] [次に]
まき [E-Mail] 1998/11/20(金) 10:45:49
buttonをクリックされると、POSTでデータを受信し結果を表示するページを作成しています。
しかし、結果の表示が遅い場合、ユーザが何度もボタンをクリックし、同じデータが何度も
送信されてしまいます。
そこで、buttonを1度クリックすると、そのボタンを無効にする方法を知りたいのですが
どなたか教えて下さい。
お願いいたします。

mura 1998/11/20(金) 14:07:41
JavaScriptが有効という前提であれば、<HEAD>〜</HEAD>間に
<SCRIPT LANGUAGE=JavaScript>
<!--
var called=0;
// -->
</SCRIPT>

というのを入れて、

<FORM METHOD=post ACTION="送り先"> というのを
<FORM METHOD=post ACTION="送り先" onSubmit="return !called++;"> にすればいいです。
(submit関数でなくsubmitボタン<INPUT TYPE=submit>を使っている場合の話です)

#returnの後ろってだいぶシンプルにしましたが、この書き方で問題ないのかな?
#NNではOKみたいですが…。

100%確実かどうか自信はないですが、もう少し手軽な方法で
<FORM METHOD=post ACTION="送り先"> というのを
<FORM METHOD=post ACTION="送り先"
onSubmit="return confirm(確認のためもう1度OKボタンを押して下さい);">
にするという手もあります。(上の<SCRIPT>〜</SCRIPT>は必要ありません。)

mura 1998/11/20(金) 14:15:08
> onSubmit="return confirm(確認のためもう1度OKボタンを押して下さい);"

メッセージはシングルクォーテーションで囲ってください。(^^;)

まき [E-Mail] 1998/11/20(金) 14:41:04
どうもありがとうございました。
Netscapeでは、成功しました。でも、、IEでは、だめでした。
お聞きしたのいのですが、

 return !called++;

は、どういう意味なのでしょうか?

まき 1998/11/20(金) 15:03:54
すいません、先ほどの質問「return !called++;は、どういう意味なのでしょうか? 」は、
分かりました。
とりあえず、onSubmitの return値を trueで実行、falseで実行しない
というふうになっているんですね。

でも、IEの方で、

 <FORM METHOD=post ACTION="送り先" onSubmit="return false;">

として、submitボタンをクリックしても、データの送信を実行してします。
IEの場合、onSubmitにてどのような処理をすれば、実行しなくなるのでしょうか?

mura [E-Mail] 1998/11/20(金) 23:00:35
IE3で私が書いたスクリプトを実行してみましたが、問題なく動くみたいです。

>submitボタンをクリックしても、データの送信を実行してします。
>IEの場合、onSubmitにてどのような処理をすれば、実行しなくなるのでしょうか?

<INPUT TYPE=submit>ではなくJavaScriptのsubmit()を実行した場合は
onSubmitで書いた部分は実行されない(送信されてしまう)んですが、そうじゃなくってですか?
IEはIE4をお使いなんでしょうか。(私はIE4を持ってないのでチェックできないですが…)

まき 1998/11/23(月) 12:34:59
[[解決]]
またまた、すいません。
マシンを起動し直して、やり直すとできました。
(IEでJavaScriptを実行すると、その内容はずっとキャッシュされるのでしょうか?
 リロードして、ソースを確認したにも関わらず、JavaScriptの変更が有効になっていませんでした。
 何がおかしいのだろうか?こんなことがあるのかなぁ...)
まあでも、いろいろ、書きましたが、無事成功です。
ほんとに、どうもありがとうございました。

[上に] [前に] [次に]