如何在ajax调用后更改特定按钮值

时间:2012-04-07 12:16:13

标签: asp.net-mvc jquery ajaxform

我有一个列表,如果项目和每个项目我有按钮。当我点击该按钮时,我进行服务器调用,然后在该调用之后我需要更改按钮文本。所以我将此函数写入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,而我正在尝试的只是更改我点击的按钮。就像你在stackoverflow上点击这里最喜欢的问题明星一样 我的action方法现在返回void:

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

1 个答案:

答案 0 :(得分: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');
        }
    });
});