最近仕事で触ったECサイトの注文フォームで、注文確定ボタンをダブルクリックすると注文メールが2通送信されてしまう問題に遭遇した。

その時に使ったjQueryコードを備忘録としてメモしておく。

// ダブルクリックによる2重送信防止
$(function(){
	$('input[type="submit"]').on('click', function(){
		$(this).prop('disabled', true);
		$(this).closest('form').submit();
	});
});

送信ボタンクリック時のfunctionを定義し、まず4行目でクリックされた直後、送信ボタンを表す$(this)に対しdisabled属性を与えボタンを無効化させる。

次に5行目、closestメソッドで送信ボタンから一番近いformを取得し、submit()を実行する。

これで送信ボタンが何度クリックされても、submit処理は一度しか走らないようになる。