jQueryのoneでフォームの2重送信を防止する
フォームのサブミットボタンをダブルクリックすると、リクエストが何度も飛んでしまうことがあるので、なんとかしてくれって要件がたまにあります。
普通のinput type="submit"だったらdisableにしたりするんじゃないかと思います
$("input[type=submit]").click(function() { $(this).attr("disabled", "disabled"); });
anchorタグとか、なんでもいいんですが、form要素じゃないものにイベント貼り付けてフォームをsubmitさせてるときはどうなるでしょうか
disabled属性は効きません
こんな例をみつけてちょっとなるほどと思ったのでメモしておきます。
jQueryのoneを使うってやつです。
$("a.button").one("click", function(e) { e.preventDefault(); $('form').submit(); return false; });
jQueryのoneとか初めてしったんですが、1度だけ呼び出される関数をbindできるみたいですね。
あまりちゃんと検証してないけど、ぱっとみた感じは制御できてそう。
参考 : javascript - Disabling links to stop double-clicks in JQuery - Stack Overflow