如何在提交表单执行JQuery时显示加载gif的意思

时间:2011-11-15 18:03:50

标签: jquery loading form-submit

我正在尝试显示一个简单的微调器gif同时正在执行提交(这需要一点点因为我必须通过Web服务与提供者建立一些通信)。

所以,我有这个:

$('#gds_form').submit(function() {
        var pass = true;
        //some validations

        if(pass == false){
            return false;
        }

        $("body").prepend('<div class="ui-widget-overlay" style="z-index: 1001;"></div>');
        $("body").prepend("<div id ='PleaseWait'><img src='/images/spinner.gif'/></div>");
        return true;
    });
事实是,.gif没有显示任何动画,就像它被冻结了一样。

为什么?

还有另一种实现方法(请注意我没有使用AJAX,我不想这样做)?

谢谢。

5 个答案:

答案 0 :(得分:13)

使用jQuery submit函数,您可以指定加载图像,如下所示:

$('#form').submit(function() {
    $('#wait').show();
    $.post('/somepage.htm', function() {
        $('#wait').hide();
    });
    return false;
});

答案 1 :(得分:11)

您是否尝试将图像加载到文档准备就绪,只隐藏它。然后在你的功能中显示它?这样,图像就已经加载并旋转了。

$(document).ready(function() {
    $("body").prepend('<div id="overlay" class="ui-widget-overlay" style="z-index: 1001; display: none;"></div>');
    $("body").prepend("<div id='PleaseWait' style='display: none;'><img src='/images/spinner.gif'/></div>");
});

$('#gds_form').submit(function() {
    var pass = true;
    //some validations

    if(pass == false){
        return false;
    }
    $("#overlay, #PleaseWait").show();

    return true;
});

答案 2 :(得分:1)

您的实施的真正问题是客户端如何知道您的请求何时完成。 Ajax有用的原因之一是因为我们有状态的概念,因此我们可以在客户端等待响应时显示加载器,并在客户端收到响应时删除加载器。

您如何确定与Web服务的通信何时完成?你说你不想使用Ajax,但如果你想要查询服务以确定你的通信是否完成,你可能会看到需要Ajax的东西。

答案 3 :(得分:0)

使用.show()和.hide()在发送时切换加载动画?

答案 4 :(得分:0)

我会在页面上开始使用div,但是如果需要style='display:none',请在代码中添加$('#PleaseWait').show()

如果您离开display:none,则可以编辑查看其外观,而无需一次又一次地提交表单。

NB:为方便起见,您可能希望将叠加层和gif包装在父div中。