bootstrap3-dialog:更强大、更灵活的模态框

用过bootstrap框架的同学们都知道,bootstrap自带的模态框用起来很不灵活,可谓鸡肋的很。但nakupanda开源作者封装了一个更强大、更灵活的模态框——bootstrap3-dialog。

一、源码下载

bootstrap3-dialog git下载地址

二、效果展示

1.error警告框

2.confirm确认选择框

3.Success提示框

4.ajax加载远程页面弹出框

5.ajax加载自定义页面弹出框

三、使用方法

bootstrap3-dialog的demo中已有很详细的介绍,但对于初学者来说是个麻烦,还要一个一个方法和注释去看。但我对这些常用的方法进行了新的封装,所以就简便了很多。 
引入js和css文件我就不多说了,直接说使用方法。

①、error警告框

//弹出错误提示的登录框
$.showErr = function(str, func) {
    // 调用show方法
    BootstrapDialog.show({
        type : BootstrapDialog.TYPE_DANGER,
        title : ‘错误 ‘,
        message : str,
        size : BootstrapDialog.SIZE_SMALL,//size为小,默认的对话框比较宽
        buttons : [ {// 设置关闭按钮
            label : ‘关闭‘,
            action : function(dialogItself) {
                dialogItself.close();
            }
        } ],
        // 对话框关闭时带入callback方法
        onhide : func
    });
};

这样封装后,需要弹出error警告框的时候直接使用$.showErr("当日没有资金日报")即可。

②、confirm确认选择框

$.showConfirm = function(str, funcok, funcclose) {
    BootstrapDialog.confirm({
        title : ‘确认‘,
        message : str,
        type : BootstrapDialog.TYPE_WARNING, // <-- Default value is
        // BootstrapDialog.TYPE_PRIMARY
        closable : true, // <-- Default value is false,点击对话框以外的页面内容可关闭
        draggable : true, // <-- Default value is false,可拖拽
        btnCancelLabel : ‘取消‘, // <-- Default value is ‘Cancel‘,
        btnOKLabel : ‘确定‘, // <-- Default value is ‘OK‘,
        btnOKClass : ‘btn-warning‘, // <-- If you didn‘t specify it, dialog type
        size : BootstrapDialog.SIZE_SMALL,
        // 对话框关闭的时候执行方法
        onhide : funcclose,
        callback : function(result) {
            // 点击确定按钮时,result为true
            if (result) {
                // 执行方法
                funcok.call();
            }
        }
    });
};

通过$.showConfirm(title, _doPost);进行调用。

③、Success提示框

$.showSuccessTimeout = function(str, func) {
    BootstrapDialog.show({
        type : BootstrapDialog.TYPE_SUCCESS,
        title : ‘成功 ‘,
        message : str,
        size : BootstrapDialog.SIZE_SMALL,
        buttons : [ {
            label : ‘确定‘,
            action : function(dialogItself) {
                dialogItself.close();
            }
        } ],
        // 指定时间内可自动关闭
        onshown : function(dialogRef) {
            setTimeout(function() {
                dialogRef.close();
            }, YUNM._set.timeout);
        },
        onhide : func
    });
};

④、ajax加载远程页面弹出框

首先,我们先来看如何使用。

<a href="${ctx}/common/showSendMessage" target="dialog">点击打开</a>

对,就这一行代码即可!

  1. 一个a标签
  2. 一个href属性指向远程页面
  3. target属性设置为dialog

不过,我们需要做一下封装。

第一步,页面加载时,我们需要让a标签执行ajaxTodialog方法。

$(function() {
    // dialogs
    if ($.fn.ajaxTodialog) {
        $("a[target=dialog]").ajaxTodialog();
    }
});

第二步,封装ajaxTodialog方法。

$.fn.extend({
    ajaxTodialog : function() {
        return this.click(function(event) {
            var $this = $(this);
            YUNM.debug("ajaxTodialog" + $this.selector);

            var title = $this.attr("title") || $this.text();
            var url=$this.attr("href");
            $.ajax({
                type : ‘POST‘,
                url : url,
                cache : false,
                success : function(response) {
                    ajaxDialog = BootstrapDialog.show({
                        message : function(dialog) {
                            var $message = $(‘<div></div>‘);
                            $message.html(response);// 把传回来的页面作为message返回

                            return $message;
                        },
                        title : title,
                }
            });
            event.preventDefault();
            return false;
        });
    },
});
  • 1

⑤、ajax加载自定义页面弹出框

⑤和④类似,不过有些区别,下面只把区别列出来。

使用方法上,需要加上manipulating=”1”,指明为自定义页面,不使用bootstrap dialog的header、footer。

<a href="${ctx}/common/showSendMessage" target="dialog" manipulating="1">自定义页面</a>
  • 1
  • 1

ajaxTodialog方法中增加对manipulating=1的处理。

if (manipulating == 1) {
    ajaxDialog = new BootstrapDialog({
        message : function(dialog) {
            var $message = $(‘<div></div>‘);
            $message.html(response);

            return $message;
        },
        // 找到自定义页面上x号进行绑定close事件
        onshown : function(dialogRef) {
            var $button = dialogRef.getModalContent().find(‘button[data-widget="remove"]‘);
            $button.on(‘click‘, {
                dialogRef : dialogRef
            }, function(event) {
                event.data.dialogRef.close();
            });
        },
    });
    ajaxDialog.realize();
    ajaxDialog.getModalHeader().hide();// header不要
    ajaxDialog.getModalFooter().hide();// footer也不要
    ajaxDialog.getModalBody().css(‘padding‘, 0);// 无填充
    ajaxDialog.open();
}


介绍完了,下一篇将利用bootstrap dialog做一个手机preview的预览效果。

时间: 2024-08-01 18:29:42

bootstrap3-dialog:更强大、更灵活的模态框的相关文章

Bootstrap3.0学习教程十七:JavaScript插件模态框

这篇文章中我们主要来学习一下JavaScipt插件模态框.在学习模态框之前,我们先来了解一下JavaScript插件吧. JavaScript插件概览 插件可以单个引入(使用Bootstrap提供的单个*.js文件),或一次性全部引入(使用bootstrap.js或压缩版的bootstrap.min.js). 不要将两份文件全部引入 bootstrap.js和bootstrap.min.js同样是包含了所有插件.区别是:一个没有压缩,一个进行了压缩. 插件之间的依赖 某些插件和CSS组件依赖于其

bootstrap 的模态框

1,改变bootstrap 的宽与高, 将style="height:900px"放在<div class = "modal-dialog">或者更外层上,整个模态框的高度不会发生变化 (只有放在content 的样式里面才生效) 2)宽度 将style="width:900px"放在<div class = "modal-dialog">会引起整个模态框的宽度发生变化,且模态框如原先居中显示 若将样式

Bootstrap模态框的学习笔记

模态框(Modal)是覆盖在父窗体上的子窗体,可提供信息.交互等.使用模态窗口,您需要有某种触发器. 在控制器元素(比如按钮或者链接)上设置属性 data-toggle="modal",表示触发的是个模态框. 设置 data-target="#myModal" 或 href="#myModal" 来指定要切换的特定的模态框(带有 id="myModal"). myModal是模态框定义的id,来指向特定的模态框.#表示在本页面

教你使用HTML5原生对话框元素,轻松创建模态框组件

HTML 5.2草案加入了新的dialog元素.但是是一种实验技术. 以前,如果我们想要构建任何形式的模式对话框或对话框,我们需要有一个背景,一个关闭按钮,将事件绑定在对话框中的方式安排我们的标记,找到一种将消息传递出去的方式对话......这真的很复杂.对话框元素解决了上述所有问题. 一.Bootstrap模态框和原生模态框的对比 下面是一个bootstrap模态框的html结构: <!-- 按钮触发模态框 --> <button class="btn btn-primary

10个工具让你的 shell 脚本更强大

10个工具让你的 shell 脚本更强大 很多人误以为shell脚本只能在命令行下使用.其实shell也可以调用一些GUI组件,例如菜单,警告框,进度条等等.你可以控制最终的输出,光标位 置还有各种输出效果.下面我将介绍一些工具,帮助你创建强大的,互动的,用户友好的 Unix/Linux shell脚本.我在FreeBSD和Linux下测试过这些工具,不过其他UNIX系列的操作系统应该都支持的. 1. notify-send 命令 这个命令可以让你通过通知进程发送一个桌面通知给用户.这可以用来向

powerMock比easyMock和Mockito更强大(转)

powerMock是基于easyMock或Mockito扩展出来的增强版本,所以powerMock分两种类型,如果你习惯于使用easyMock的,那你就下载基于easyMock的powerMock,反之你喜欢用mockito的话就下载另一种PowerMock. powerMock之所以说它更强大是因为它解决了easyMock和Mockito没有解决的问题,就是可以模仿static,private和final的方法.举例如下: public class User{ private User use

pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大。

Select rows from a DataFrame based on values in a column -pandas 筛选 https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大. 在SQL数据中, 我们可以用这样的语句: select * from

一个功能更强大的函数,也是用正则表达式写的

<% Option Explicit Function stripHTML(strtext) dim arysplit,i,j, strOutput arysplit=split(strtext,"<") if len(arysplit(0))>0 then j=1 else j=0 for i=j to ubound(arysplit) if instr(arysplit(i),">") then arysplit(i)=mid(arysp

让XP启动密码更强大的方法

我们经常可以在网上看见各种破解Windows XP登录名和密码的方法,这让我们对Windows XP的安全性大打折扣.其实,Windows XP还有一个更安全的"启动密码"方法,这个密码显示在用户密码前,而且还可以生成钥匙盘,如果设置它,你的Windows XP就更加安全了,下面来看看怎么制作这个强大的"启动密码". 1.设置启动密码 依次选择"开始→运行",在"运行"对话框中输入"Syskey"命令,接着