使用jQuery,在单击表单提交后显示加载的gif动画。

17

我想在表单提交后显示一个简单的加载图标。我的代码无法正确显示加载图标。您会发现,我为gif图像设置了visibility:hidden

<script src="js/jquery-1.11.1.min.js"></script>

<div class="" style="width: 480px; margin: 0 auto; margin-top: 20px;" id="form_wrapper">
    <img src="img/loader.gif" id="gif" style="display: block; margin: 0 auto; width: 100px; visibility: hidden;">
    <div class="fade" id="form">
        <form action="process_login.php" method="POST" name="simplelogin" id="login_form"><br />
            <label for="username">&nbsp; Username:</label>
            <input type="username" name="username" id="username" size="30" required><br><br>
            <label for="password">&nbsp; Password:</label>
            <input type="password" name="password" id="password" size="30" required><br><br>
            <input class="load_button" type="submit" name="submit" id="submit" value="Submit" placeholder="Submit">
        </form>
    </div>
</div>
<div class="fifty"></div>

<script type="text/javascript">
    $('.load_button').submit(function() {
        $('#gif').show(); 
        return true;
    });
</script>

2
根据jQuery API http://api.jquery.com/submit/,您的`input`元素不应该有类似于`submit`的`names`或`ids`。 - RST
谢谢 @RST,我会把它修好的。 - ValleyDigital
4个回答

33

show() 方法只影响 display 的 CSS 属性设置。如果您想设置元素的可见性,需要直接设置它。此外,.load_button 元素是一个按钮,不会触发 submit 事件。您需要将选择器更改为 form 才能实现该功能:

$('#login_form').submit(function() {
    $('#gif').css('visibility', 'visible');
});

需要注意的是,在您的逻辑中return true;是冗余的,可以将其删除。


你也可以使用 setTimeout() 在提交之前暂停并显示 gif 几秒钟。 - Ian Hazzard

8
<script type="text/javascript">
     $('#login_form').submit(function() {
       $('#gif').show(); 
       return true;
     });
 </script>

3

仅使用JS的更好更清晰的示例

参考: TheDeveloperBlog.com

步骤1 - 创建您的JavaScript并将其放置在HTML页面中。

<script type="text/javascript">
    function ShowLoading(e) {
        var div = document.createElement('div');
        var img = document.createElement('img');
        img.src = 'loading_bar.GIF';
        div.innerHTML = "Loading...<br />";
        div.style.cssText = 'position: fixed; top: 5%; left: 40%; z-index: 5000; width: 422px; text-align: center; background: #EDDBB0; border: 1px solid #000';
        div.appendChild(img);
        document.body.appendChild(div);
        return true;
        // These 2 lines cancel form submission, so only use if needed.
        //window.event.cancelBubble = true;
        //e.stopPropagation();
    }
</script>

在你的表单中,在提交事件上调用JavaScript函数。
<form runat="server"  onsubmit="ShowLoading()">
</form>

提交表单后不久,页面就会显示加载图像。

3
表单返回后,这并不会删除加载横幅。 - gene b.
对我来说它有效。它确实将其移除,因为在加载后,加载的div不再存在。 - Harvey Darvey

0

关于 onclick 函数怎么样:

    <form id="form">
    <input type="text" name="firstInput">
    <button type="button" name="namebutton" 
           onClick="$('#gif').css('visibility', 'visible');
                    $('#form').submit();">
    </form>

当然,你可以把这个放在一个函数里面,然后通过onClick触发它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接