1

ページをリロードせずにフォームを送信するjQuery/Ajaxスクリプトを使用しています。ページに複数のフォームがあり、それらはすべて同じクラス(IDなし)です。これは、以下を使用してフォームを送信するために正常に機能します。

    $('document').ready(function()
{
    $('.form').ajaxForm( {
        success: function() {
            //$('.form').addClass("clicked");
            //$(this).slideUp('fast');
        }
    });
});

しかし、送信が成功したときに何かをしたいのですが、送信されたフォームを参照する方法がないようです。this演算子を使用することは理にかなっていますが、機能しません。私はこのようなことをしたい:

$(this).slideUp('fast');

送信されたフォームに応じて、要素ごとに個別に。(.formをセレクターとして使用すると、すべてのフォームが非表示になるため、機能しません)。

フォームにクラスを追加して(適切な要素を参照することもできないようですが)、slideUp関数を呼び出すために使用してみました。

ありがとう

4

2 に答える 2

2

使用しているajaxFormプラグインは、成功コールバックのフォームへの参照を提供します。

success: function (responseText, statusText, xhr, $form) {
    $form.slideUp("fast");
}

ドキュメント: http: //jquery.malsup.com/form/#ajaxForm

このプラグインを使用していなかった場合は、その参照を自分で維持する必要があります。this一般的なアプローチの1つは、次のようなものに割り当てることにより、適切なものへの参照を保持することですself

$(".form").on("submit", function () {
    var self = this;
    $.ajax({
        success: function () {
            $(self).slideUp();
        }
    });
});
于 2012-11-18T06:21:32.927 に答える
1

プラグインはあなたに別の方法を与えます---それは次のajaxSubmit()ように使うことができます:

$('.form').submit(function() { 
    var $form = $(this);
    $form.ajaxSubmit({
        success: function() {
            $form.addClass("clicked").slideUp('fast');//or whatever
        }
    });     
    return false; //suppress natural form submission
});
于 2012-11-18T06:56:06.420 に答える