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

 更新时间:2015年04月02日 10:37:34   投稿:hebedich  
Bootbox.js 是一个小型的 JavaScript 库用来创建简单的可编程对话框,基于 Twitter 的 Bootstrap 开发。今天我们就来研究下,如何使用bootbox插件来实现自定义弹窗。

本次尝试了一个新的小插件"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样式。

看下对比结果:

修改前:

修改后:

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

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

相关文章

  • JavaScript手风琴页面制作

    JavaScript手风琴页面制作

    这篇文章主要为大家详细介绍了JavaScript手风琴页面的制作代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • JS获取url参数、主域名的方法实例分析

    JS获取url参数、主域名的方法实例分析

    这篇文章主要介绍了JS获取url参数、主域名的方法,结合实例形式分析了javascript针对主机域名、端口、路径名、URL参数等的相关操作技巧,需要的朋友可以参考下
    2016-08-08
  • Javascript实现获取及设置光标位置的方法

    Javascript实现获取及设置光标位置的方法

    这篇文章主要介绍了Javascript实现获取及设置光标位置的方法,涉及javascript针对页面光标位置的相关操作技巧,具有良好的兼容性,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • JS实现transform实现扇子效果

    JS实现transform实现扇子效果

    这篇文章主要为大家详细介绍了JS实现transform实现扇子效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • js实现类似MSN提示的页面效果代码分享

    js实现类似MSN提示的页面效果代码分享

    这篇文章主要介绍了模仿MSN消息提示的效果,推荐给大家,有需要的小伙伴可以参考下。
    2015-08-08
  • JavaScript实现一个带AI的井字棋游戏源码

    JavaScript实现一个带AI的井字棋游戏源码

    这篇文章主要介绍了基于JavaScript实现一个带AI的井字棋游戏源码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • 浅谈js for循环输出i为同一值的问题

    浅谈js for循环输出i为同一值的问题

    下面小编就为大家带来一篇浅谈js for循环输出i为同一值的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Javascript中this绑定的3种方法与比较

    Javascript中this绑定的3种方法与比较

    大家都知道JS是一门动态语言,与传统的c和c++最大的区别就是js是在运行时动态检测值的类型和变化。this是js中的一个关键字,它代表当前作用域的上下文环境,而且随着上下文的改变而动态变化。这篇文章我们将详细介绍Javascript中绑定this的三种方法与简单的比较。
    2016-10-10
  • JS面向对象、prototype、call()、apply()

    JS面向对象、prototype、call()、apply()

    那天用到prototype.js于是打开看看,才看几行就满头雾水,原因是对js的面向对象不是很熟悉,于是百度+google了一把,最后终于算小有收获,写此纪念一下^_^。
    2009-05-05
  • JavaScript中this的用法实例分析

    JavaScript中this的用法实例分析

    这篇文章主要介绍了JavaScript中this的用法,结合实例形式分析了this的功能、常见用法与相关注意事项,需要的朋友可以参考下
    2016-12-12

最新评论