電子書籍の厳選無料作品が豊富!

いつもお世話になっております。
JavaScriptの二重送信防止についてご教授ください。

現在、下記のJavaScriptを組んでいるのですが、うまく二重送信防止が効いていません。
どこか、おかしなコードがありますでしょうか?
ちなみに、<html:text>タグ内でonkeypress="JavaScript:toEnter();"を指定…((1))、
<a href>内でonclick="JavaScript:toAdd();"を指定…((2))しているのですが、
テキストボックス内でエンターを押下した時((1))にうまく二重送信防止が効いていません。

宜しくお願い致します。

<script language="JavaScript">
<!--
var flgSubmit = false;
function submitCheck() {
if ( flgSubmit ) {
return false;
} else {
flgSubmit = true;
return true;
}
}

function toEnter(){
if( submitCheck() ) {
if(event.keyCode == 13) toAdd();
}
}

function toAdd() {
if( submitCheck() ) {
document.AddForm.submit();
}
}
//-->
</script>

A 回答 (1件)

*--引用--------------------------------------------*


function toEnter(){
 if( submitCheck() ) {
  if(event.keyCode == 13) toAdd();
 }
}
function toAdd() {
 if( submitCheck() ) {
  document.AddForm.submit();
 }
}
*--------------------------------------------------*

この記述だとtoEnter()内でsubmitCheck()を行ったのち、
更にtoAdd()でもsubmitCheck()を行ってしまうのが、問題
だと思います。なのでtoEnter()は

function toEnter(){
 if(event.keyCode == 13) {
  toAdd();
 }
}

という書き方でよいかと思います。
またテキストボックスではonkeypressではなくonkeydown
でイベントを拾わないと上手く動作しないと思います。

分かり辛いところがありましたら再度ご質問下さい。
可能であれば回答致します。^^;

この回答への補足

ご回答ありがとうございます!
質問させて頂いてからの回答を頂く間に、coboler様の回答と似たような記述にしていました。【下記参照】
以下のコードで、onkeypress(onkeydown)を記述しているテキストボックスで何も入力しない時は良いのですが、
入力して二重送信の場合、alertのダイアログボックスが出るのですがtoAdd()が実行されてしまいます。
alertを出力する時は、処理を行わないはずなのに…と思っているのですが、
コードがおかしいでしょうか?
※テキストボックスにエンター以外でも文字を入力した場合は、toEnter()は実行されるので、そのあたりでしょうか?

sent=0
function toEnter(){
 if( event.keyCode == 13 ) {
  if( sent == 0 ) {
   sent = 1;
   toAdd();
  } else {
   alert( "二重送信" );
   return false;
  }
 }
}

function toAdd() {
 document.TestForm.submit();
}

補足日時:2006/11/09 13:17
    • good
    • 0
この回答へのお礼

補足で記述した現象は、二重起動は関係なかったみたいです。
しかし、JavaScriptについて、勉強になりました。
ありがとうございました。

お礼日時:2006/11/10 11:56

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