JavaScript / jQuery Disable Submitボタンを無効にすると、二重送信を防ぐ
-
13-12-2019 - |
質問
だから私はこのような送信ボタンを持っています:
<a href="#" id="submitbutton"
onClick="document.getElementById('UploaderSWF').submit();">
<img src="../images/user/create-product.png" border="0" /></a>
.
明らかに二重送信をダブルクリックしたとき、そして問題はそれです 私はデータベースに情報を保存しているので、そこに重複した情報があります。 そして私はそれを望んではいけません。このアップローダはFlashとJavScriptを使用し、ここでは少しピースです。 提出物に関連するコードの(それが役立つ場合)
$.fn.agileUploaderSubmit = function() {
if($.browser.msie && $.browser.version == '6.0') {
window.document.agileUploaderSWF.submit();
} else {
document.getElementById('agileUploaderSWF').submit();
return false;
}
}
.
ありがとうございます。 私はあなたの助けに感謝します。これは私が自分自身をすることができなかったものです 私はJSでそのような少しの経験を持っているので、私は本当にどのように知っていない ものをするために。 ありがとう。
解決
これを試してみてください:
$('#your_submit_id').click(function(){
$(this).attr('disabled');
});
.
編集1
ああ、あなたの場合はリンクであり、送信ボタンがない...
var submitted = false;
$.fn.agileUploaderSubmit = function() {
if ( false == submitted )
{
submitted = true;
if($.browser.msie && $.browser.version == '6.0') {
window.document.agileUploaderSWF.submit();
} else {
document.getElementById('agileUploaderSWF').submit();
}
}
return false;
}
.
編集2
これを簡単にするために、これを試してください:
<!doctype html>
<html dir="ltr" lang="en">
<head>
<meta charset="utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
$(document).ready(function()
{
$('#yourSubmitId').click(function()
{
$(this).attr('disabled',true);
/* your submit stuff here */
return false;
});
});
//--><!]]>
</script>
</head>
<body>
<form id="yourFormId" name="yourFormId" method="post" action="#">
<input type="image" id="yourSubmitId" name="yourSubmitId" src="yourImage.png" alt="Submit" />
</form>
</body>
</html>
.
<input type="image" />
のようなフォーム要素を使用して、通常のリンクではない形式を送信します。
これは元気です!
jquery.post()フォームを送信するには、
他のヒント
onclick
:
onclick="document.getElementById('submitbutton').disabled = true;document.getElementById('UploaderSWF').submit();"
.
は、サーバー側でこの二重送信防止を処理する必要があります。
http://api.jquery.com/prop/ .ATTR()関数ではなく、.prop()関数を使用して無効なプロパティを追加して削除できます。
プロパティを追加するには:
.prop("disabled", true);
.
プロパティを削除するには:
.prop("disabled", false);
.
これがあなたを助けることを願っています。
提案されたようにここ(例付き):
登録されたイベントが一度だけ解雇されていることを確認したい場合は、jQueryの[1] [1]:
を使用する必要があります。.ONE(イベント[、データ]、ハンドラ)戻り値:jQuery
説明:要素のイベントにハンドラを添付します。ハンドラはイベントタイプごとに要素ごとに1回で実行されます。
これはすべての送信ボタンとクラス送信またはクラス送信または属性データとリンクを無効にし、フォーム内の属性データ -
$(document).ready(function() {
$('form').submit(function() {
$(this).find('input[type="submit"]').attr('disabled', true);
$(this).find('a[data-submit], a.submit').click(function() {
return false;
});
}
});
.
これは自動的にあらゆる形式に適用されます。特定のものをご希望の場合は、フォームの代わりにIDを使用してください。あなたはたぶんすでにそれを知っていましたが、それを知っていました。