首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >引导程序警报在初始出现后不会关闭

引导程序警报在初始出现后不会关闭
EN

Stack Overflow用户
提问于 2018-08-31 06:13:38
回答 1查看 55关注 0票数 0

这是一个很难解释和演示的问题,基本上我使用的是PHP、Smarty、Ajax和Bootstrap的混合。

我有一个聪明的模板与它的Ajax表单(这工作),一个PHP后端,添加到数据库的表单细节(这也工作),在成功或失败时会显示一个警报,这个警报是从Bootstrap CSS,它被写到页面如下。

代码语言:javascript
复制
$('form').append('<div class="alert alert-success alert-dismissible" role="alert">' + data.message + '<a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a></div>');

警告确实显示在页面中,并且警告确实关闭了!但是,例如,如果我或用户想要再次使用表单,例如,向数据库添加另一个记录,则会显示警报,但这一次它永远不会关闭!因此,如果我再添加10条记录,并像往常一样在每条记录之后单击submit按钮,我的窗体下就会有10个永远不会关闭的警告框。

代码语言:javascript
复制
<script type="text/javascript">
    window.setTimeout(function() {
        $(".alert").fadeTo(1000, 0).slideUp(1000, function() {
            $(this).hide();
        });
    }, 5000);
</script>

有没有人知道我可以做些什么来代替它呢?

下面的代码关闭了警报,但是关于何时关闭警报有一些不一致之处。

代码语言:javascript
复制
$(document).ready(function() {
    $('form').submit(function(event) {

        // snip

        var alertTimer1 = window.setInterval(function() {
            if (typeof alertTimer2 === 'undefined') {
                var alertTimer2 = window.setTimeout(function() {
                    $('#alert').find('.alert').fadeTo(1000, 0).slideUp(1000, function() {
                        $(this).remove();

                        window.clearInterval(alertTimer1);
                        window.clearTimeout(alertTimer2);
                    });
                }, 5000);
            }
        }, 100);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 06:28:48

setInterval定期检查的情况下,setTimeout函数只执行一次。例如:https://codepen.io/anon/pen/VGPYXB

更好的解决方案可能是在添加消息后添加警报消息集setTimeout函数,或者像这样使用delay函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52106047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档