Bootstrap模态立即关闭,应该延迟

时间:2013-11-12 21:09:01

标签: javascript jquery twitter-bootstrap

在此示例中,单击导航菜单上的contact选项卡将打开引导模式。如果用户在小于10的模式文本框中输入字符串,则会出现警告并且模式不会关闭。如果字符串大于10,则会在模式中附加一条消息,说明类似success...的内容,并且模态应该延迟一个咒语然后消失。使用当前代码,验证部分和模态显示起作用,但在它消失之前没有延迟。为什么当前的代码无法正常工作?如何解决?

fiddle JS

$(document).ready(function () {

            $('#modalClose').click(function () {
                var validResult = getLength('#tbName', 10);
                if (validResult) {
                    var successMessage = $('<div>').text('Successfully saved to database...').css('color', 'green');
                    $('.modal-body').append(successMessage);
                    $('#contact').delay(5000).modal('hide');
                }
                else {
                    alert('input did not meet validation, try again');
                    $('#tbName').val('').focus();
                }
            });
            function getLength(el, x) {
                var len = $(el).val().length
                return len > x
            }
            $('#contact').on('hide.bs.modal', function () {
                $('#tbName').val('');
            });
            $('#contact').on('shown.bs.modal', function () {
                $('#tbName').focus();
            });
        });

2 个答案:

答案 0 :(得分:10)

您应该使用setTimeout代替delaydelay适用于动画队列。

  window.setTimeout(function(){
     $('#contact').modal('hide');
  }, 2000); //2000 milliseconds i.e 2 seconds, you can change it to the value as you need

<强> Demo

答案 1 :(得分:1)

我会选择设置超时的简单javascript方法:

if (validResult) {
                var successMessage = $('<div>').text('Successfully saved to database...').css('color', 'green');
                $('.modal-body').append(successMessage);
                window.setTimeout(function() { 
                $('#contact').modal('hide'); }, 500);
            }

这仅配置为.5秒(5秒感觉有点长),但这适用于附加的小提琴http://jsfiddle.net/BAJ8X/4/