0

JQuery と div (入力フィールドではない) にバインドされたイベント リスナーを使用してフォームを送信していますが、顧客が過大請求されないように、複数の送信を防止しようとしています。クリックされたdivのクラスを削除することでこれを達成しようとしているので、ユーザーが次にクリックしたときに、JQueryは複数の送信の防止submit-buttonに関連付けられているイベントをリッスンしません。submit-button

ただし、以下の実装を使用すると、意図したように、何らかの理由で複数の送信が防止されません。

HTML

<div class="submit-button button-style">Submit</div>

JQuery

$(".submit-button").click(function(){
    $(this).removeClass("submit-button");
    //**submit form**
});

注: 上記の html を使用するソリューションに固執する必要があるためinput、 type の要素を使用するソリューションsubmitは役に立ちません。

これを機能させる方法についての提案に感謝します。よろしくお願いします!

4

3 に答える 3

0

ユーザーの大部分は、わざわざフォームを送信するために送信ボタンをクリックすることはありません。カーソルのフォーカスがフォーム フィールドにあるときに Enter キーを押すなど、もっと便利な方法が他にもあります。

より堅牢なアプローチは、フォーム送信イベントを介してフォームをブロックし、変数を維持してフォーム送信状態を追跡することです。

var submitted = false;
$("form#myForm").submit(function(evt){
    if (submitted) {
        evt.preventDefault();//stops form submission
        return;
    }

    submitted = true;
});

この例では、フォームの検証を省略しました。

于 2013-08-04T21:57:54.557 に答える