【问题标题】:How to change specific button value after ajax callajax调用后如何更改特定按钮值
【发布时间】:2012-04-07 12:16:13
【问题描述】:

如果项目和每个项目我都有按钮,我有一个列表。当我单击该按钮时,我会进行服务器调用,然后在调用之后我需要更改按钮文本。所以我写了这个函数来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 上单击最喜欢的问题星时一样。
我的操作方法现在返回 void:

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

【问题讨论】:

    标签: asp.net-mvc jquery ajaxform


    【解决方案1】:

    您可以在闭包中捕获表单:

    $('.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');
            }
        });
    });
    

    【讨论】:

    • 此代码仍会将表单中类名称为“itemHoverBox”的所有按钮更改为“已确认”,这是 OP 试图避免的。
    • @ChrisGessler,不,不会。因为我在成功回调中有以下选择器:form.find('.itemHoverBox'),它与$('.itemHoverBox') 完全不同。我的选择器将使用itemHoverBox 类查找表单的所有子元素,而第二个选择器将简单地选择具有此类的DOM 中的所有元素。
    • 正确,全部“在表格内”。如果只想更改一个按钮,最好使用元素的 ID。就个人而言,我根本不会使用 jQuery 来做到这一点。 document.getElementById() 更快。
    • @ChrisGessler,但是如果您将多个动态表单放入一个表格中,例如,每个表单都有自己的提交按钮,该怎么办?你会给每个提交按钮一个不同的ID吗?然后你会为你拥有的每个 id 重复相同的代码 (.ajaxForm) 吗?
    • 这就是我想问的。我有数千个项目,我不想设置每个项目 ID。此解决方案有效。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2019-01-01
    相关资源
    最近更新 更多