Yii2使用Bootbox插件实现自定义弹窗


Posted in Javascript onApril 02, 2015

本次尝试了一个新的小插件"bootbox"。

Yii2中使用了Bootstarp,让界面更美观,可是美中不足的是,在Gridview表格的Action里,删除功能的弹窗实在有点与Bootstrap违和,网上找到了一种解决方案,分享下使用此插件的过程。

Bootbox.js,是一个小型的JavaScript库用来创建简单的可编程对话框,基于Bootstrap的Modal(模态框)来创建。

官方说明

http://bootboxjs.com/v3.x/index.html

Bootbox.js下载

我们可以在GitHub上找到开源的bootbox.js下载

https://github.com/makeusabrew/bootbox

如何使用此插件?

结合Yii2的GridView,我们来自定义Bootbox样式的弹窗:

一、覆盖yii.js模块

Yii2自带的yii.js中定义了生成confirm对话框,以及执行action操作。

我们可以用过覆盖js方法来达到目的。

在@app/web/js/路径下创建一个javascript文件,比如main.js。

代码如下:

yii.allowAction = function ($e) {
  var message = $e.data('confirm');
  return message === undefined || yii.confirm(message, $e);
};
// --- Delete action (bootbox) ---
yii.confirm = function (message, ok, cancel) {

  bootbox.confirm(
    {
      message: message,
      buttons: {
        confirm: {
          label: "OK"
        },
        cancel: {
          label: "Cancel"
        }
      },
      callback: function (confirmed) {
        if (confirmed) {
          !ok || ok();
        } else {
          !cancel || cancel();
        }
      }
    }
  );
  // confirm will always return false on the first call
  // to cancel click handler
  return false;
}

二、注册你的资源包

需要注册bootbox.js和main.js文件。

修改文件:@app/assets/Assets.php

代码如下:

namespace backend\assets;

use yii\web\AssetBundle;

class AppAsset extends AssetBundle
{
  public $basePath = '@webroot';
  public $baseUrl = '@web';
  public $css = ['css/site.css'];
  // 注册js资源
  public $js = ['js/bootbox.js', 'js/main.js'];
  public $depends = [
    'yii\web\YiiAsset',
    'yii\bootstrap\BootstrapAsset',
  ];
}

三、自定义Modal框

了解下bootbox.js源码,可以知道bootbox.js使用的是bootstarp的modal框,我们可以根据需求

修改bootbox.js源码中的"templates"变量,自定义Modal样式。

看下对比结果:

修改前:

Yii2使用Bootbox插件实现自定义弹窗

修改后:

Yii2使用Bootbox插件实现自定义弹窗

瞬间舒服多了,弹窗功能变的不再那么违和。类似这样的弹窗插件有很多,我想可以用同样的方法来实现使用其他的插件。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
自己开发Dojo的建议框架
Sep 24 Javascript
javascript 计算两个整数的百分比值
Dec 26 Javascript
jQuery 选择器项目实例分析及实现代码
Dec 28 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
Aug 27 Javascript
Jquery通过Ajax访问XML数据的小例子
Nov 18 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
Dec 29 Javascript
jQuery中:image选择器用法实例
Jan 03 Javascript
基于Node.js的强大爬虫 能直接发布抓取的文章哦
Jan 10 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
Jun 26 Javascript
基于javascript的Form表单验证
Dec 29 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
Oct 26 Javascript
jquery制作多功能轮播图插件
Apr 02 #Javascript
Javascript中3个需要注意的运算符
Apr 02 #Javascript
原生JS实现响应式瀑布流布局
Apr 02 #Javascript
Javascript变量的作用域和作用域链详解
Apr 02 #Javascript
JavaScript中连接操作Oracle数据库实例
Apr 02 #Javascript
JavaScript中操作Mysql数据库实例
Apr 02 #Javascript
JavaScript使用ActiveXObject访问Access和SQL Server数据库
Apr 02 #Javascript
You might like
ADODB结合SMARTY使用~超级强
2006/11/25 PHP
php部分常见问题总结
2008/03/27 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
JS去掉字符串中所有的逗号
2017/10/18 Javascript
layui获取多选框中的值方法
2018/08/15 Javascript
redux.js详解及基本使用
2019/05/24 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
2020/02/01 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
python中星号变量的几种特殊用法
2016/09/07 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
python爬取哈尔滨天气信息
2018/07/14 Python
浅谈Python的list中的选取范围
2018/11/12 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
python使用gdal对shp读取,新建和更新的实例
2020/03/10 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
怎样从/向数据文件读/写结构
2014/11/23 面试题
幼儿园家长会欢迎词
2014/01/09 职场文书
安全生产责任书
2014/03/12 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
防灾减灾活动总结
2014/08/30 职场文书
2014年科研工作总结
2014/12/03 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
项目战略合作意向书
2015/05/08 职场文书
物资采购管理制度
2015/08/06 职场文书
微信小程序实现聊天室功能
2021/06/14 Javascript