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 相关文章推荐
js 第二代身份证号码的验证机制代码
May 12 Javascript
Jquery 自定义动画概述及示例
Mar 29 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
JavaScript中的alert()函数使用技巧详解
Dec 29 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
Mar 19 Javascript
基于javascript实现图片滑动效果
May 07 Javascript
jQuery Ajax 加载数据时异步显示加载动画
Aug 01 Javascript
jquery实现超简单的瀑布流布局【推荐】
Mar 08 Javascript
vue项目中公用footer组件底部位置的适配问题
May 10 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
Vue实现剪贴板复制功能
Dec 31 Javascript
webpack中的模式(mode)使用详解
Feb 20 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
咖啡语言
2021/03/03 咖啡文化
我的论坛源代码(三)
2006/10/09 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
用php来限制每个ip每天浏览页面数量的实现思路
2015/02/24 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
教你识别简单的免查杀PHP后门
2015/09/13 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
JS 字符串连接[性能比较]
2009/05/10 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
2013/11/18 NodeJs
javascript 判断整数方法分享
2014/12/16 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
js实现登录与注册界面
2017/11/01 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
angularjs自定义过滤器demo示例
2019/08/24 Javascript
JavaScript交换变量的常用方法小结【4种方法】
2020/05/07 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
Python如何import文件夹下的文件(实现方法)
2017/01/24 Python
python正则表达式之对号入座篇
2018/07/24 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
python读取hdfs上的parquet文件方式
2020/06/06 Python
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
高职教师岗位职责
2013/12/24 职场文书
网络程序员自荐信
2014/01/25 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
农业开发项目建议书
2014/05/16 职场文书
求职信格式范文
2015/03/19 职场文书
中学综治宣传月活动总结
2015/05/07 职场文书
谢师宴家长答谢词
2015/09/30 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP