1

アイテムのリストがあり、各アイテムにボタンがあります。そのボタンをクリックすると、サーバー呼び出しが行われ、その呼び出しの後、ボタンのテキストを変更する必要があります。したがって、この関数を ajaxify 呼び出しに記述します。

$('.form').ajaxForm({
            beforeSubmit: function () {                
            },
            success: function (result) {
                $('.itemHoverBox').attr('value', 'Confirmed');
            },
            error: function (xhr, textStatus, errorThrown) {           
            }
        });

これはアクションボタンです:

@using (Html.BeginForm("Confirm", "Products", new { productId = @t.ProductId }, FormMethod.Post, new { @class="form"}))
{
<input style="width: 60px;" class="itemHoverBox button white" type="submit" value="Confirm" />
}

しかし、これitemHoverBoxはページ上のすべての変更であり、私がしようとしているのは、クリックしたボタンを変更することだけです。ここでスタックオーバーフローのお気に入りの質問スターをクリックしたときのように。
私のアクションメソッドは今のところ void を返します:

[HttpPost]
        public void CollectTicket(int ticketId)
        {
            ...           
        }
4

1 に答える 1

3

クロージャーでフォームをキャプチャできます。

$('.form').each(function() {
    var form = $(this);
    form.ajaxForm({
        success: function (result) {
            form.find('.itemHoverBox').attr('value', 'Confirmed');
        }
    });
});

または、contextパラメーターを使用してさらにクリーンにします。

$('.form').each(function() {
    var form = $(this);
    form.ajaxForm({
        context: form,
        success: function (result) {
            // Here this will equal to the context object we specified
            this.find('.itemHoverBox').attr('value', 'Confirmed');
        }
    });
});
于 2012-04-07T12:21:11.037 に答える