8

したがって、次のような送信ボタンがあります。

<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の経験がほとんどなく、作業方法がよくわからないため、自分ではできなかったことです。ありがとう。

4

5 に答える 5

12

これを切り取ってみてください:

$('#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()を見て、フォームを送信してください。

幸運を。

編集3

これは私にとってもうまくいきます:

<!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()
    {
        var agileUploaderSWFsubmitted = false;

        $('#submitbutton').click(function()
        {
            if ( false == agileUploaderSWFsubmitted )
            {
                agileUploaderSWFsubmitted = true;

                //console.log( 'click event triggered' );

                if ( $.browser.msie && $.browser.version == '6.0' )
                {
                    window.document.agileUploaderSWF.submit();
                }
                else
                {
                    document.getElementById( 'agileUploaderSWF' ).submit();
                }
            }

            return false;
        });
    });
//--><!]]>
</script>

</head>
<body>

<form id="agileUploaderSWF" name="agileUploaderSWF" method="post" action="http://your.action/script.php">
    <input type="text" id="agileUploaderSWF_text" name="agileUploaderSWF_text" />
</form>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

<a href="#" id="submitbutton"><img src="../images/user/create-product.png" border="0" /></a>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

</body>
</html>

うまくいけば、これがお役に立てば幸いです。

于 2012-07-28T23:04:17.240 に答える
5

onclick以下を:に追加します。

onclick="document.getElementById('submitbutton').disabled = true;document.getElementById('UploaderSWF').submit();"

とはいえ、サーバー側でもこの二重送信防止を処理する必要があります。

于 2012-07-28T23:06:25.580 に答える
0

これにより、すべての送信ボタンと、クラス送信または属性データとのリンクが無効になります。いずれかがクリックされた場合は、フォームで送信します。

$(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を使用してください。しかし、おそらくあなたはすでにそれを知っていたでしょう。

于 2012-07-29T03:16:14.010 に答える
0

http://api.jquery.com/prop/によると 、.attr()関数や.removeAttr()関数ではなく、.prop()関数を使用して、無効になっているプロパティを追加および削除できます。

プロパティを追加するには:

.prop("disabled", true);

プロパティを削除するには:

.prop("disabled", false);

これがお役に立てば幸いです。

于 2019-03-27T19:39:42.177 に答える
0

ここで提案されているように(例を使用して):

登録されたイベントが1回だけ発生するようにする場合は、jQueryの[one] [1]を使用する必要があります:

.one(events [、data]、handler)戻り値:jQuery

説明:要素のイベントにハンドラーをアタッチします。ハンドラーは、イベントタイプごとの要素ごとに最大1回実行されます。

于 2019-11-14T10:50:52.860 に答える