【问题标题】:jquery ajaxform global functionsjquery ajaxform 全局函数
【发布时间】:2012-06-03 23:02:06
【问题描述】:

我们在我们的网站上使用jQuery form plugin。我们需要能够在所有表单上发生提交时显示加载 gif。到目前为止,我已经能够像下面这样完成这项工作

    $("#uploadAssetImageForm").ajaxForm({
        dataType: 'json',
        beforeSubmit: function () {Cvrs.SetLoading(true, '#uploadAssetImageForm')},
        success: function(asset) {
            Cvrs.SetLoading(false, '#uploadAssetImageForm');
        $("#uploadAssetImageDiv").dialog("close");
            $(":input", "#uploadAssetImageDiv").not(':button, :submit, :reset').val('').removeAttr('checked').removeAttr('selected');
            ReplaceAsset(asset);

        }
    });

特别是我正在谈论的部分是 beforeSubmit 函数和再次调用以在成功时将其设置为 false。

设置加载只显示加载 gif 和禁用的表单按钮

function(isLoading, form) {

isLoading ? $(form + ' input[type="submit"]').attr("disabled", true) :
    $(form + ' input[type="submit"]').removeAttr("disabled");


isLoading ? $(form + ' .loading-animation').show() :
    $(form + ' .loading-animation').hide();

有什么方法可以让我调用 ajaxform 在 beforeSubmit 上运行该代码并成功以及可能存在的任何其他代码(尽管首先运行加载的东西)还是我必须通过每个案例并添加这个?

我知道我必须将加载引用放在每个表单中,但这是有道理的,因为不同的表单可能需要在不同的位置加载 gif

【问题讨论】:

    标签: javascript ajax jquery


    【解决方案1】:

    您可以考虑使用ajaxSend 事件。它在 AJAX 发送事件触发之前触发:

    $(document).bind('ajaxSend', function(e, request, options) {
        Cvrs.SetLoading(true, '#uploadAssetImageForm');
    });
    

    希望对你有帮助!

    【讨论】:

    • 我需要以某种方式将其与表单联系起来,所以我只在那个表单中激活加载 gif,也许这些参数可以让我访问信息,看看
    • @DanielPowell 您可以直接绑定到表单而不是文档,这可能取决于您打算重新绑定。
    • 似乎即使当页面中发生另一个 ajax 请求时我直接将其绑定到表单,它也会在表单中启用它,需要一种方法来指定仅从表单中发生的 ajax 请求(它们不幸的是有不同的网址)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多