0

クリック後にフォームを送信するリンクを無効にしようとしています。これは、同じユーザーからの重複したリクエストを停止するために必要です。これが私のコードですが、残念ながら機能していません。

<a id="submit-form-link" onclick="document.forms[0].submit()" class="next">Next <span>Step</span></a>

<script type="text/javascript">
    $('#submit-form-link').click(function(){
        $('submit-form-link', this).attr('style', 'pointer-events: none;');
    });
</script>

近くにいるような気がしますが、うまくいきません。

4

5 に答える 5

3

あなたはこれについて間違っています。インラインの onclick イベント ハンドラーを取り除き、ドキュメント準備完了呼び出し内でこれを使用します。

$('#submit-form-link').one('click', function(){
    $('form').submit();
});

これにより、クリック イベントがリンクにバインドされますが、最初のクリック後にバインドが解除されます。

このjsFiddle exampleのコンソールでこれを確認できます。リンクを初めてクリックすると、フォームの送信が試行されますが、それ以降のクリックでは試行されません。

于 2013-10-26T19:46:50.203 に答える
1

これを試して:

...
$('submit-form-link').off().click(function() { return false; });
...
于 2013-10-26T19:47:20.847 に答える
1
<a id="submit-form-link" onclick="document.forms[0].submit()" class="next">Next <span>Step</span></a>

<script type="text/javascript">
    $('#submit-form-link').click(function(){
        if (!$(this).hasClass('disabled')) {
            $('submit-form-link', this).attr('class', 'next disabled');
            return true;
        }
        return false;
    });
</script>

ここで、クラスを作成し、disabled必要に応じてスタイルを設定できます。ボタンをクリックした後にこのクラスを追加するだけで、無効になっていることがわかります。次に、ボタンが既にクリックされている場合は、false を返してイベントを停止します。

于 2013-10-26T19:50:20.020 に答える
0

最初のクリック イベント コールバック関数でクリック イベントを再度バインドします。

$('#submit-form-link').click(function(){
    $('submit-form-link', this).attr('style', 'pointer-events: none;');

     $(this).click(function(e){e.preventDefault})
});
于 2013-10-26T19:46:41.053 に答える
0

onclick属性を削除する必要があります。

$('#submit-form-link').click(function(){
    $(this).removeAttr('onclick');
});

また、$('submit-form-link', this)完全に間違っています。submit-form-linkの子であるタイプのノードを選択していthisます。まず必要なの#submit-form-linkthis、クリックしたリンク ノードへの参照です。

于 2013-10-26T19:46:48.797 に答える