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

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

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

どなたかお知恵をお貸しください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

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="送信">

この回答への補足

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

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

すみませんが教えてください、お願いします。

補足日時:2001/12/13 14:58
    • good
    • 0

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



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

# 別のことを聞かれているのだとしたらゴメンナサイ。
# その場合は補足をお願いします。
    • good
    • 0
この回答へのお礼

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

勉強になりました。

お礼日時:2001/12/19 17:21

Javascript でボタンを disable にしちゃう、ってのは?



function formSend(btn) {

  btn.disabled = true;

  // 送信の処理
  ...
}

<input type="button" value="送信" onClick="formSend(this)">
    • good
    • 0
この回答へのお礼

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

参考になりました、ありがとうございました。

お礼日時:2001/12/13 15:02

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q送信ボタンをbuttonに変えてonclickでsubmitがうまくいきません

宜しく御願いします。
enterキーでの誤送信を防ごうと過去ログをみてそのとおりにフォームのsubmitをfalseで返し、送信ボタンをbuttonにかえてタイトルのようにjavascriptで送信しようとしたのですが「ページでエラーが発生しました」と画面下のステータスバー(?)に表示され、うまくいきません。どなたか御教授ください。ちなみにページはPHPで書いており、フレームを使用しております。
若しくは別の方法でenterキー入力を回避できる方法があれば教えてください。(onfocus以外で)

Aベストアンサー

#2です

しつれいしました。1点見逃してました
buttonの名前に「submit」はつかえません。
「submit1」とか適当な名前にしてみてください

Qでボタンを押したときの処理

ボタンをクリックしたらalertによって下記のような文字列、trueかfalseを返すようにしたいのです。

fulction hantei(){

if(str.length > 6){
document.write("true")
}
else{
document.write("false")
}
}

あと、functionにはdocument.writeが使えないようなのですが、そうならばどのようにして表示させるのでしょう?

よろしくお願いします。

Aベストアンサー

"alertによって"の表現が、どうにでもとれます。
「警告ダイアログを表示させたい」という意味であれば、#1の方の説明の通りです。
画面上のどこか文字列を変更したいならば、document.all(ID) と innerHTMLを利用できます。ただしNetscapeでは、4.x系も、7.x系も効きません。Opera、Firefoxを有効なようですね。

以下にサンプル

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>てすと</title>
<script type="text/javascript">
<!--
function func(message)
{
 var targetItem = document.all("alertTarget");
 targetItem.innerHTML = message;
}
// -->
</script>
</head>
<body>
<form target=".">
<span id="alertTarget"></span><br>
<input type="button" value="alert A" onclick="func('aaaa')">
<input type="button" value="alert B" onclick="func('bbbb')">
</form>
</body>
</html>

"alertによって"の表現が、どうにでもとれます。
「警告ダイアログを表示させたい」という意味であれば、#1の方の説明の通りです。
画面上のどこか文字列を変更したいならば、document.all(ID) と innerHTMLを利用できます。ただしNetscapeでは、4.x系も、7.x系も効きません。Opera、Firefoxを有効なようですね。

以下にサンプル

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Script-Type" content="text/javascript">
<me...続きを読む

Q送信ボタンを押した後、target=

<input type="submit" value="送信">
と記述しました。
送信ボタンを押したら、
target="_blank"
にて新たに画面が立ち上がるようにし、
そこに関連htmlへリンクし、表示したいのですが・・・
やり方を教えてください。

Aベストアンサー

その送信ボタンを含むフォーム自体に、target属性を入れておくのではいかがですか?
目的と動作内容の詳細がわからないので、踏み込んだところまではいえませんが…

<form target="_blank" action="***.cgi">

<input type="submit" value="送信">
</form>

こうすると、新しいウィンドウでform送信した結果を受け取るようになると思います。

フォーム送信の結果を新規ウィンドウで拾いたいという意味ではなくて、フォーム送信と並行して別ウィンドウを開いて特定のHTMLをそこに読み出したいという場合でしたら、formにonSubmitのイベントハンドラを用意しておき、それでサブミット時にJavaScriptの処理を実行させるようにしておけばよいと思います。

<form action="***.cgi" onSubmit="window.open('***.html','_blank')">

<input type="submit" value="送信">
</form>

このような感じにしておけば、フォームがサブミットされた時に、特定のHTMLを新たなウィンドウに読み出す処理を、フォーム送信の前に行うはずです。

参考まで。

その送信ボタンを含むフォーム自体に、target属性を入れておくのではいかがですか?
目的と動作内容の詳細がわからないので、踏み込んだところまではいえませんが…

<form target="_blank" action="***.cgi">

<input type="submit" value="送信">
</form>

こうすると、新しいウィンドウでform送信した結果を受け取るようになると思います。

フォーム送信の結果を新規ウィンドウで拾いたいという意味ではなくて、フォーム送信と並行して別ウィンドウを開いて特定のHTMLをそこに読み出したいという場合...続きを読む

QCGIフォーム一定時間過ぎると送信ボタンを押さなくてもsubmitする

CGIフォームで20秒、一定時間過ぎると送信ボタンを押さなくても自動的にsubmitする様にしたいのですが、多分JavaScriptで出来るのではないかと思うのですが、コード例など教えていただけませんでしょうか?

Aベストアンサー

setTimeoutすると読み込まれてからnミリ秒後に実行します
20秒であれば第二パラメータで20000です。
formをサブミットするのはformsの番号もしくは名前で
指定して、submit()するだけです。
はっしょって書くと以下のとおり。

<script langugage="javascript">
setTimeout('document.forms[0].submit()',20000)
</script>

Q入力フォームで、全角カタカナ(正規表示)以外を入力し送信ボタンを押すとアラートを出すjavascriptが知りたいのですが

htmlで、フォームの項目の中にフリガナを入力してもらう際、全角カタカナ(ア~ン、ァ~ヶ、ゞ等を含む正規表示で)以外の入力を行って送信ボタンを押すと、「フリガナを全角カタカナで正しくご入力下さい」というアラートをjavascriptで出したいのですが、どう判定させたらよいものか、さっぱりわからなくて書き込みさせて頂いています。どなたかご存じの方がいらっしゃったら教えて頂けないでしょうか?
どうか、宜しくお願い致します。

Aベストアンサー

参考URLは半角カタカナですが
ひらがなも指定すればご質問のようなことが可能です。

参考URL:http://www.openspc2.org/reibun/javascript/business/001/index.html


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報