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


Posted in Javascript onApril 20, 2017

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

一、源码下载

bootstrap3-dialog git下载地址

二、效果展示

1.error警告框

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

2.confirm确认选择框

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

3.Success提示框

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

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

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

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

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

三、使用方法

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" rel="external nofollow" rel="external nofollow" 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;
  });
 },
});

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

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

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

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

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();
}

以上所述是小编给大家介绍的bootstrap3 dialog 更强大、更灵活的模态框,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript里使用Dom操作Xml
Sep 20 Javascript
javascript 学习之旅 (2)
Feb 05 Javascript
jQuery实现流动虚线框的方法
Jan 29 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
Oct 01 Javascript
AngularJS 使用$sce控制代码安全检查
Jan 05 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 Javascript
js仿网易表单及时验证功能
Mar 07 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
基于JSONP原理解析(推荐)
Dec 04 Javascript
原生JS实现动态加载js文件并在加载成功后执行回调函数的方法
Dec 30 Javascript
Vue 解决路由过渡动画抖动问题(实例详解)
Jan 05 Javascript
vue实现树状表格效果
Dec 29 Vue.js
angularjs过滤器--filter与ng-repeat配合有奇效
Apr 20 #Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
Apr 20 #Javascript
bootstrap常用组件之头部导航实现代码
Apr 20 #Javascript
基于JavaScript实现活动倒计时效果
Apr 20 #Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
Apr 20 #Javascript
jquery将标签元素的高设为屏幕的百分比
Apr 19 #jQuery
通过js修改input、select默认字体颜色
Apr 19 #Javascript
You might like
广告代码静态化js通用函数
2007/05/09 Javascript
一段利用WSH修改和查看IP配置的代码
2008/05/11 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
Sequelize中用group by进行分组聚合查询
2016/12/12 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
[46:40]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
重命名批处理python脚本
2013/04/05 Python
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
让Python代码更快运行的5种方法
2015/06/21 Python
用Python编写简单的微博爬虫
2016/03/04 Python
Python中取整的几种方法小结
2017/01/06 Python
理论讲解python多进程并发编程
2018/02/09 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
django实现后台显示媒体文件
2020/04/07 Python
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
Giglio美国站:意大利奢侈品购物网
2018/02/10 全球购物
物业管理公司实习生自我鉴定
2013/09/19 职场文书
商务日语毕业生自荐信范文
2013/11/14 职场文书
自主实习接收函
2014/01/13 职场文书
关于赌博的检讨书
2014/01/24 职场文书
挂牌仪式主持词
2014/03/20 职场文书
家长会演讲稿
2014/04/26 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
交通事故起诉书
2015/05/19 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
canvas 中如何实现物体的框选
2022/08/05 Javascript