欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-08-27 23:28:18
用过bootstrap框架的同学们都知道,bootstrap自带的模态框用起来很不灵活,可谓鸡肋的很。但nakupanda开源作者封装了一个更强大、更灵活的模态框——boo...

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

一、源码下载

二、效果展示

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 更强大、更灵活的模态框,希望对大家有所帮助