search
HomeWeb Front-endJS TutorialJS component Bootstrap implements pop-up box and prompt box effect code_javascript skills

前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑。在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的系统有一个友好的弹出提示框,自然能给用户很好的页面体验。前面几章介绍了bootstrap的几个常用组件,这章来看看bootstrap里面弹出框和提示框的处理。总的来说,弹出提示主要分为三种:弹出框、确定取消提示框、信息提示框。本篇就结合这三种类型分别来介绍下它们的使用。

一、Bootstrap弹出框
使用过JQuery UI应该知道,它里面有一个dialog的弹出框组件,功能也很丰富。与jQuery UI的dialog类似,Bootstrap里面也内置了弹出框组件。打开bootstrap 文档可以看到它的dialog是直接嵌入到bootstrap.js和bootstrap.css里面的,也就是说,只要我们引入了bootstrap的文件,就可以直接使用它的dialog组件,是不是很方便。本篇我们就结合新增编辑的功能来介绍下bootstrap dialog的使用。废话不多说,直接看来它如何使用吧。
1、cshtml界面代码

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
          <h4 id="新增">新增</h4>
        </div>
        <div class="modal-body">

          <div class="form-group">
            <label for="txt_departmentname">部门名称</label>
            <input type="text" name="txt_departmentname" class="form-control" id="txt_departmentname" placeholder="部门名称">
          </div>
          <div class="form-group">
            <label for="txt_parentdepartment">上级部门</label>
            <input type="text" name="txt_parentdepartment" class="form-control" id="txt_parentdepartment" placeholder="上级部门">
          </div>
          <div class="form-group">
            <label for="txt_departmentlevel">部门级别</label>
            <input type="text" name="txt_departmentlevel" class="form-control" id="txt_departmentlevel" placeholder="部门级别">
          </div>
          <div class="form-group">
            <label for="txt_statu">描述</label>
            <input type="text" name="txt_statu" class="form-control" id="txt_statu" placeholder="状态">
          </div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span>关闭</button>
          <button type="button" id="btn_submit" class="btn btn-primary" data-dismiss="modal"><span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span>保存</button>
        </div>
      </div>
    </div>
  </div>

最外面的div定义了dialog的隐藏。我们重点来看看第二层的div

<div class="modal-dialog" role="document">

这个div定义了dialog,对应的class有三种尺寸的弹出框,如下:

<div class="modal-dialog" role="document">

第一种表示默认类型的弹出框;第二种表示增大的弹出框;第三种表示满屏的弹出框。role="document"表示弹出框的对象的当前的document。

2、js里面将dialog show出来。
默认情况下,我们的弹出框是隐藏的,只有在用户点击某个操作的时候才会show出来。来看看js里面是如何处理的吧:

 //注册新增按钮的事件
    $("#btn_add").click(function () {
      $("#myModalLabel").text("新增");
      $('#myModal').modal();
    });

对,你没有看错,只需要这一句就能show出这个dialog.

$('#myModal').modal();

3、效果展示
新增效果

编辑效果

4、说明
弹出框显示后,点击界面上其他地方以及按Esc键都能隐藏弹出框,这样使得用户的操作更加友好。关于dialog里面关闭和保存按钮的事件的初始化在项目里面一般是封装过的,这个我们待会来看。

二、确认取消提示框
这种类型的提示框一般用于某些需要用户确定才能进行的操作,比较常见的如:删除操作、提交订单操作等。

1、使用bootstrap弹出框确认取消提示框
介绍这个组件之前,就得说说组件封装了,我们知道,像弹出框、确认取消提示框、信息提示框这些东西项目里面肯定是多处都要调用的,所以我们肯定是要封装组件的。下面就来看看我们封装的缺乏取消提示框。

(function ($) {

  window.Ewin = function () {
    var html = '<div id="[Id]" class="modal fade" role="dialog" aria-labelledby="modalLabel">' +
               '<div class="modal-dialog modal-sm">' +
                 '<div class="modal-content">' +
                   '<div class="modal-header">' +
                     '<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>' +
                     '<h4 id="Title">[Title]</h4>' +
                   '</div>' +
                   '<div class="modal-body">' +
                   '<p>[Message]</p>' +
                   '</div>' +
                    '<div class="modal-footer">' +
    '<button type="button" class="btn btn-default cancel" data-dismiss="modal">[BtnCancel]</button>' +
    '<button type="button" class="btn btn-primary ok" data-dismiss="modal">[BtnOk]</button>' +
  '</div>' +
                 '</div>' +
               '</div>' +
             '</div>';


    var dialogdHtml = '<div id="[Id]" class="modal fade" role="dialog" aria-labelledby="modalLabel">' +
               '<div class="modal-dialog">' +
                 '<div class="modal-content">' +
                   '<div class="modal-header">' +
                     '<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>' +
                     '<h4 id="Title">[Title]</h4>' +
                   '</div>' +
                   '<div class="modal-body">' +
                   '</div>' +
                 '</div>' +
               '</div>' +
             '</div>';
    var reg = new RegExp("\\[([^\\[\\]]*&#63;)\\]", 'igm');
    var generateId = function () {
      var date = new Date();
      return 'mdl' + date.valueOf();
    }
    var init = function (options) {
      options = $.extend({}, {
        title: "操作提示",
        message: "提示内容",
        btnok: "确定",
        btncl: "取消",
        width: 200,
        auto: false
      }, options || {});
      var modalId = generateId();
      var content = html.replace(reg, function (node, key) {
        return {
          Id: modalId,
          Title: options.title,
          Message: options.message,
          BtnOk: options.btnok,
          BtnCancel: options.btncl
        }[key];
      });
      $('body').append(content);
      $('#' + modalId).modal({
        width: options.width,
        backdrop: 'static'
      });
      $('#' + modalId).on('hide.bs.modal', function (e) {
        $('body').find('#' + modalId).remove();
      });
      return modalId;
    }

    return {
      alert: function (options) {
        if (typeof options == 'string') {
          options = {
            message: options
          };
        }
        var id = init(options);
        var modal = $('#' + id);
        modal.find('.ok').removeClass('btn-success').addClass('btn-primary');
        modal.find('.cancel').hide();

        return {
          id: id,
          on: function (callback) {
            if (callback && callback instanceof Function) {
              modal.find('.ok').click(function () { callback(true); });
            }
          },
          hide: function (callback) {
            if (callback && callback instanceof Function) {
              modal.on('hide.bs.modal', function (e) {
                callback(e);
              });
            }
          }
        };
      },
      confirm: function (options) {
        var id = init(options);
        var modal = $('#' + id);
        modal.find('.ok').removeClass('btn-primary').addClass('btn-success');
        modal.find('.cancel').show();
        return {
          id: id,
          on: function (callback) {
            if (callback && callback instanceof Function) {
              modal.find('.ok').click(function () { callback(true); });
              modal.find('.cancel').click(function () { callback(false); });
            }
          },
          hide: function (callback) {
            if (callback && callback instanceof Function) {
              modal.on('hide.bs.modal', function (e) {
                callback(e);
              });
            }
          }
        };
      },
      dialog: function (options) {
        options = $.extend({}, {
          title: 'title',
          url: '',
          width: 800,
          height: 550,
          onReady: function () { },
          onShown: function (e) { }
        }, options || {});
        var modalId = generateId();

        var content = dialogdHtml.replace(reg, function (node, key) {
          return {
            Id: modalId,
            Title: options.title
          }[key];
        });
        $('body').append(content);
        var target = $('#' + modalId);
        target.find('.modal-body').load(options.url);
        if (options.onReady())
          options.onReady.call(target);
        target.modal();
        target.on('shown.bs.modal', function (e) {
          if (options.onReady(e))
            options.onReady.call(target, e);
        });
        target.on('hide.bs.modal', function (e) {
          $('body').find(target).remove();
        });
      }
    }
  }();
})(jQuery);

不了解组件封装的朋友可以先看看相关文章。这里我们的确认取消提示框主要用到了confirm这个属性对应的方法。还是来看看如何调用吧:

 //注册删除按钮的事件
 $("#btn_delete").click(function () {
      //取表格的选中行数据
      var arrselections = $("#tb_departments").bootstrapTable('getSelections');
      if (arrselections.length <= 0) {
        toastr.warning('请选择有效数据');
        return;
      }

      Ewin.confirm({ message: "确认要删除选择的数据吗?" }).on(function (e) {
        if (!e) {
          return;
        }
        $.ajax({
          type: "post",
          url: "/api/DepartmentApi/Delete",
          data: { "": JSON.stringify(arrselections) },
          success: function (data, status) {
            if (status == "success") {
              toastr.success('提交数据成功');
              $("#tb_departments").bootstrapTable('refresh');
            }
          },
          error: function () {
            toastr.error('Error');
          },
          complete: function () {

          }

        });
      });
    });

message属性传入提示的信息,on里面注入点击按钮后的回调事件。

生成的效果:

2、bootbox组件的使用
在网上找bootstrap的弹出组件时总是可以看到bootbox这么一个东西,确实是一个很简单的组件,还是来看看如何使用吧。

当然要使用它必须要添加组件喽。无非也是两种方式:引入源码和Nuget。

接下来就是使用它了。首先当然是添加bootbox.js的引用了。然后就是在相应的地方调用了。

$("#btn_delete").click(function () {
      var arrselections = $("#tb_departments").bootstrapTable('getSelections');
      if (arrselections.length <= 0) {
        toastr.warning('请选择有效数据');
        return;
      }

      bootbox.alert("确认删除", function () {
        var strResult = "";
      })
      bootbox.prompt("确认删除", function (result) {
        var strResult = result;
      })
      bootbox.confirm("确认删除", function (result) {
        var strResult = result;
      })
      
    });

效果展示:

更多用法可以参见api。使用起来基本很简单。这个组件最大的特点就是和bootstrap的风格能够很好的保持一致。

3、在网上还找到一个效果比较炫一点的提示框:sweetalert

 

要使用它,还是老规矩:Nuget。

(1)文档

(2)在cshtml页面引入js和css

   
   
(3)js使用
     

 swal({
        title: "操作提示",   //弹出框的title
        text: "确定删除吗?",  //弹出框里面的提示文本
        type: "warning",    //弹出框类型
        showCancelButton: true, //是否显示取消按钮
        confirmButtonColor: "#DD6B55",//确定按钮颜色
        cancelButtonText: "取消",//取消按钮文本
        confirmButtonText: "是的,确定删除!",//确定按钮上面的文档
        closeOnConfirm: true
      }, function () {
          $.ajax({
            type: "post",
            url: "/Home/Delete",
            data: { "": JSON.stringify(arrselections) },
            success: function (data, status) {
              if (status == "success") {
                toastr.success('提交数据成功');
                $("#tb_departments").bootstrapTable('refresh');
              }
            },
            error: function () {
              toastr.error('Error');
            },
            complete: function () {

            }

          });
      });

(4)效果展示:

点击确定后进入回调函数:

组件很多,用哪种园友没可以自行决定,不过博主觉得像一些互联网、电子商务类型的网站用sweetalert效果比较合适,一般的内部系统可能也用不上。

三、操作完成提示框
1、toastr.js组件
关于信息提示框,博主项目中使用的是toastr.js这么一个组件,这个组件最大的好处就是异步、无阻塞,提示后可设置消失时间,并且可以将消息提示放到界面的各个地方。先来看看效果。

显示在不同位置:

top-center位置

bottom-left位置

关于它的使用。

(1)、引入js和css 

<link href="~/Content/toastr/toastr.css" rel="stylesheet" />
<script src="~/Content/toastr/toastr.min.js"></script>

(2)、js初始化

<script type="text/javascript">
    toastr.options.positionClass = 'toast-bottom-right';
 </script>

将这个属性值设置为不同的值就能让提示信息显示在不同的位置,如toast-bottom-right表示下右、toast-bottom-center表示下中、toast-top-center表示上中等,更过位置信息请查看文档。

(3)、使用

//初始化编辑按钮
$("#btn_edit").click(function () {
      var arrselections = $("#tb_departments").bootstrapTable('getSelections');
      if (arrselections.length > 1) {
        toastr.warning('只能选择一行进行编辑');

        return;
      }
      if (arrselections.length <= 0) {
        toastr.warning('请选择有效数据');

        return;
      }
      
      $('#myModal').modal();
    });

使用起来就如下一句:

toastr.warning('只能选择一行进行编辑');
是不是很简单~~这里的有四种方法分别对应四种不同颜色的提示框。

toastr.success('提交数据成功');
toastr.error('Error');
toastr.warning('只能选择一行进行编辑');
toastr.info('info');

分别对应上图中的四种颜色的提示框。

2、Messenger组件
在Bootstrap中文网里面提到了一个alert组件:Messenger。

它的使用和toastr.js这个组件基本相似,只不过效果有点不太一样。我们还是来看看它是如何使用的。

(1)效果展示

可以定位到网页的不同位置,例如下图中给出的下中位置、上中位置。

提示框的样式有三种状态:Success、Error、Info

并且支持四种不同样式的提示框:Future、Block、Air、Ice

(2)组件使用以及代码示例

关于它的使用和toastr大同小异,首先引入组件:

<script src="~/Content/HubSpot-messenger-a3df9a6/build/js/messenger.js"></script>
  <link href="~/Content/HubSpot-messenger-a3df9a6/build/css/messenger.css" rel="stylesheet" />
  <link href="~/Content/HubSpot-messenger-a3df9a6/build/css/messenger-theme-future.css" rel="stylesheet" />

初始化它的位置

 <script type="text/javascript">
    $._messengerDefaults = {
      extraClasses: 'messenger-fixed messenger-theme-future messenger-on-bottom messenger-on-right'
    }
  </script>

然后js里面使用如下:

 $("#btn_delete").click(function () {
      $.globalMessenger().post({
        message: "操作成功",//提示信息
        type: 'info',//消息类型。error、info、success
        hideAfter: 2,//多长时间消失
        showCloseButton:true,//是否显示关闭按钮
        hideOnNavigate: true //是否隐藏导航
    });
 });

如果提示框使用默认样式,也只有一句就能解决 

 $.globalMessenger().post({
        message: "操作成功",//提示信息
        type: 'info',//消息类型。error、info、success
    });

很简单很强大有木有~~

四、总结
以上花了几个小时时间整理出来的几种常用bootstrap常用弹出和提示框的效果以及使用小结,希望对大家的学习有所帮助。

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何使用JS和百度地图实现地图平移功能如何使用JS和百度地图实现地图平移功能Nov 21, 2023 am 10:00 AM

如何使用JS和百度地图实现地图平移功能百度地图是一款广泛使用的地图服务平台,在Web开发中经常用于展示地理信息、定位等功能。本文将介绍如何使用JS和百度地图API实现地图平移功能,并提供具体的代码示例。一、准备工作使用百度地图API前,首先需要在百度地图开放平台(http://lbsyun.baidu.com/)上申请一个开发者账号,并创建一个应用。创建完成

js字符串转数组js字符串转数组Aug 03, 2023 pm 01:34 PM

js字符串转数组的方法:1、使用“split()”方法,可以根据指定的分隔符将字符串分割成数组元素;2、使用“Array.from()”方法,可以将可迭代对象或类数组对象转换成真正的数组;3、使用for循环遍历,将每个字符依次添加到数组中;4、使用“Array.split()”方法,通过调用“Array.prototype.forEach()”将一个字符串拆分成数组的快捷方式。

如何使用JS和百度地图实现地图热力图功能如何使用JS和百度地图实现地图热力图功能Nov 21, 2023 am 09:33 AM

如何使用JS和百度地图实现地图热力图功能简介:随着互联网和移动设备的迅速发展,地图成为了一种普遍的应用场景。而热力图作为一种可视化的展示方式,能够帮助我们更直观地了解数据的分布情况。本文将介绍如何使用JS和百度地图API来实现地图热力图的功能,并提供具体的代码示例。准备工作:在开始之前,你需要准备以下事项:一个百度开发者账号,并创建一个应用,获取到相应的AP

如何使用JS和百度地图实现地图多边形绘制功能如何使用JS和百度地图实现地图多边形绘制功能Nov 21, 2023 am 10:53 AM

如何使用JS和百度地图实现地图多边形绘制功能在现代网页开发中,地图应用已经成为常见的功能之一。而地图上绘制多边形,可以帮助我们将特定区域进行标记,方便用户进行查看和分析。本文将介绍如何使用JS和百度地图API实现地图多边形绘制功能,并提供具体的代码示例。首先,我们需要引入百度地图API。可以利用以下代码在HTML文件中导入百度地图API的JavaScript

js中new操作符做了哪些事情js中new操作符做了哪些事情Nov 13, 2023 pm 04:05 PM

js中new操作符做了:1、创建一个空对象,这个新对象将成为函数的实例;2、将新对象的原型链接到构造函数的原型对象,这样新对象就可以访问构造函数原型对象中定义的属性和方法;3、将构造函数的作用域赋给新对象,这样新对象就可以通过this关键字来引用构造函数中的属性和方法;4、执行构造函数中的代码,构造函数中的代码将用于初始化新对象的属性和方法;5、如果构造函数中没有返回等等。

用JavaScript模拟实现打字小游戏!用JavaScript模拟实现打字小游戏!Aug 07, 2022 am 10:34 AM

这篇文章主要为大家详细介绍了js实现打字小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

php可以读js内部的数组吗php可以读js内部的数组吗Jul 12, 2023 pm 03:41 PM

php在特定情况下可以读js内部的数组。其方法是:1、在JavaScript中,创建一个包含需要传递给PHP的数组的变量;2、使用Ajax技术将该数组发送给PHP脚本。可以使用原生的JavaScript代码或者使用基于Ajax的JavaScript库如jQuery等;3、在PHP脚本中,接收传递过来的数组数据,并进行相应的处理即可。

js是什么编程语言?js是什么编程语言?May 05, 2019 am 10:22 AM

js全称JavaScript,是一种具有函数优先的轻量级,直译式、解释型或即时编译型的高级编程语言,是一种属于网络的高级脚本语言;JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式,如函数式编程。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version