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弹出填写提示效果代码
Apr 16 Javascript
js预载入和JavaScript Image()对象使用介绍
Aug 28 Javascript
利用json获取字符出现次数的代码
Mar 22 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
Dec 23 Javascript
简单的JavaScript互斥锁分享
Feb 02 Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 Javascript
Node.js 条形码识别程序构建思路详解
Feb 14 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
Feb 08 Javascript
vue中vee validate表单校验的几种基本使用
Jun 25 Javascript
JS立即执行函数功能与用法分析
Jan 15 Javascript
如何在postman中添加cookie信息步骤解析
Jun 30 Javascript
JavaScript手写数组的常用函数总结
Nov 22 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
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
德劲1102收音机的打理维修案例
2021/03/02 无线电
PHP 编程安全性小结
2010/01/08 PHP
url decode problem 解决方法
2011/12/26 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
基于Jquery的简单&简陋Tabs插件代码
2010/02/09 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
全面了解addEventListener和on的区别
2016/07/14 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
javascript 产生随机数的几种方法总结
2017/09/26 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
微信小程序实现搜索框功能及踩过的坑
2020/06/19 Javascript
javascript实现贪吃蛇小练习
2020/07/05 Javascript
python实现学生管理系统
2018/01/11 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
python中setuptools的作用是什么
2020/06/19 Python
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
法务专员岗位职责
2014/01/02 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
工商管理自荐书
2014/07/06 职场文书
单位活动策划方案
2014/08/17 职场文书
教师节领导致辞
2015/07/29 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
正则表达式基础与常用验证表达式
2022/06/16 Javascript