![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になっております。
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>
No.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();
}
補足で記述した現象は、二重起動は関係なかったみたいです。
しかし、JavaScriptについて、勉強になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
JAVAスクリプトで指定時間以降...
-
functionから別のfunctionを実...
-
jQueryの"return false"の役割...
-
【JavaScript】二重送信防止
-
関数の中の値を取り出したい
-
マウスをのせてながら、2秒後に...
-
C#OpenCv V4にのエラーに関する...
-
JavaScriptとHTMLの課題です
-
<a>タグのテキストを取得
-
FireFoxのjavascriptで自動でキ...
-
クリッカブルマップのリンク部...
-
同じIDで定義した要素の配列を...
-
GASでundefinedエラーが出ます
-
【正規表現】【javascript】CR...
-
DOM要素を削除しても、イベント...
-
window.openでタイトル名の指定
-
ドラッグでセルを選択した後に
-
TexでΣの添え字の位置直し
-
undefinedを表示させない方法は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数でy=g(x)のgとは何の略です...
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
jslintのエラーについて質問
-
要素名がスペースを含む場合のj...
-
javascript(jQuery)でセル内...
-
ajax反映後のjqueryが動かない
-
jQueryの :not() .not() が有効...
-
getElementByIdを使用したグロ...
-
コードをスマートにさせたい。
-
クリックすると上に開くアコー...
-
jQueryの"return false"の役割...
-
jQueryが読み込めない
-
個別では動く、javascriptのエラー
-
一つのアクションで関数を二つ...
-
jqueryの変数を関数の外に出す方法
-
R言語
-
jQuery|:not(:animated)
-
即時関数でプライベート変数的...
-
スムーズに動く アニメーション...
おすすめ情報