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 相关文章推荐
Jquery + Ajax调用webService实例代码(asp.net)
Aug 27 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
Jan 23 Javascript
javascript实现给定半径求出圆的面积
Jun 26 Javascript
js实现文字闪烁特效的方法
Dec 17 Javascript
利用vscode编写vue的简单配置详解
Jun 17 Javascript
Vue header组件开发详解
Jan 26 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
详解easyui基于 layui.laydate日期扩展组件
Jul 18 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
May 16 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
Jun 13 Javascript
Vue data的数据响应式到底是如何实现的
Feb 11 Javascript
JavaScript快速调试的两个技巧
Nov 04 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-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
php 表单数据的获取代码
2009/03/10 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
vue分页插件的使用方法
2019/12/25 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
浅谈Python实现2种文件复制的方法
2018/01/19 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
500行python代码实现飞机大战
2020/04/24 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
港湾网络笔试题
2014/04/19 面试题
团日活动总结
2014/04/28 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS