OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ボタン2回押しを無効にしたい

  • 困ってます
  • 質問No.183943
  • 閲覧数674
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 65% (27/41)

フォームを作っているのですが、送信フォームを2,3回クリックする人がいるので制限をかけたいのです。
・ボタンを2回以上押すと2回目以降の送信を無効化する
・一定時間以内に何度送信ボタンを押しても1回しか有功化しない
のいずれかになると思うのですが、制限のかけ方が分からなく困っております。

JavaScriptで入力チェック(onClickで外部JSファイルのformSendを呼びにいきます)を別に行っているので、現在送信ボタンタグは下記のようになっています。

<input type="button" value="送信" onClick="formSend()">

どなたかお知恵をお貸しください。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 75% (398/526)

NN4 では、ボタンの disabled プロパティが使用できないので、送信フラグを用意するのが良いと思います。

それと、formSend() を button の onClick で起動していますが、これは FORM の onSubmit で実行し、submit ボタンを使用するほうが良いです。(テキストボックス内での [Enter] でも送信されるブラウザがあり、この場合、button の onClick では、これをチェックできないのです。)

また、onSubmit には bool 値を返すことで、本来の送信の役割を制御することが出来ます。今回は関数内で submit() を実行しているでしょうから、呼び出し部には false を返すようにしましょう。(trueを返すと、2回送信されます。)

あと、これは好みにもよりますが、formSend() 内ではフォームの内容を見るので、フォームオブジェクトを受け取るようにすると記述量が減って楽です。

まとめると、こんな感じでしょうか。

■スクリプト部

  var f_submit = false;

  function formSend(f) {
    if (! f_submit) {
      f_submit = true;
      // 入力チェック
      f.submit();
    }
    return false;
  }

■フォーム部

  <FORM name="form1" onSubmit="return formSend(this)" …>
    :
  <INPUT type="submit" value="送信">
補足コメント
milktea_

お礼率 65% (27/41)

ご丁寧に質問にお答えいただき、光栄です。

formSend() のチェックをしない場合、スクリプトの記述は変わってくるのでしょうか?

すみませんが教えてください、お願いします。
投稿日時 - 2001-12-13 14:58:06
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 50% (1122/2211)

Javascript でボタンを disable にしちゃう、ってのは? function formSend(btn) {   btn.disabled = true;   // 送信の処理   ... } <input type="button" value="送信" onClick="formSend(this)&qu ...続きを読む
Javascript でボタンを disable にしちゃう、ってのは?

function formSend(btn) {

  btn.disabled = true;

  // 送信の処理
  ...
}

<input type="button" value="送信" onClick="formSend(this)">
お礼コメント
milktea_

お礼率 65% (27/41)

お答えいただき、ありがとうございます。
実際設置してみて、disableというのをはじめてみました。
でも、NNがだめみたいです。

参考になりました、ありがとうございました。
投稿日時 - 2001-12-13 15:02:55
  • 回答No.3
レベル12

ベストアンサー率 75% (398/526)

> formSend() のチェックをしない場合、スクリプトの記述は変わってくるのでしょうか? 入力チェックはしないけど、二重送信防止はしたい、ということでしょうか? だったら、No.2のスクリプト部から「入力チェック」の部分を削るだけでOKです。 他の部分には、手をつける必要はありません。 # 別のことを聞かれているのだとしたらゴメンナサイ。 # その場合は補足をお願いします。 ...続きを読む
> formSend() のチェックをしない場合、スクリプトの記述は変わってくるのでしょうか?

入力チェックはしないけど、二重送信防止はしたい、ということでしょうか?
だったら、No.2のスクリプト部から「入力チェック」の部分を削るだけでOKです。
他の部分には、手をつける必要はありません。

# 別のことを聞かれているのだとしたらゴメンナサイ。
# その場合は補足をお願いします。
お礼コメント
milktea_

お礼率 65% (27/41)

ありがとうございました。
私が尋ねたいこととあっております。

勉強になりました。
投稿日時 - 2001-12-19 17:21:14
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ