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 相关文章推荐
javascript 面向对象编程基础 多态
Aug 21 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 Javascript
EasyUI实现第二层弹出框的方法
Mar 01 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
jQuery平滑旋转幻灯片特效代码分享
Sep 07 Javascript
跟我学习javascript的循环
Nov 18 Javascript
基于zepto.js简单实现上传图片
Jun 21 Javascript
纯js实现手风琴效果代码
Apr 17 Javascript
node.js中grunt和gulp的区别详解
Jul 17 Javascript
使用rollup打包JS的方法步骤
Dec 05 Javascript
javascript数组去重方法总结(推荐)
Mar 20 Javascript
JavaScript中clientWidth,offsetWidth,scrollWidth的区别
Jan 25 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
php.ini中的php-5.2.0配置指令详解
2008/03/27 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
datePicker——日期选择控件(with jquery)
2007/02/20 Javascript
js 操作select相关方法函数
2009/12/06 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
2015/09/01 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
python转换摩斯密码示例
2014/02/16 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
python模拟Django框架实例
2016/05/17 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
python中列表的含义及用法
2020/05/26 Python
CSS3使用transition实现的鼠标悬停淡入淡出
2015/01/09 HTML / CSS
HTML5未来发展趋势
2016/02/01 HTML / CSS
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
公积金转移接收函
2014/01/11 职场文书
创建服务型党组织实施方案
2014/02/25 职场文书
关于运动会的口号
2014/06/07 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python