JS组件Bootstrap实现弹出框和提示框效果代码

2023-11-04

这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码,对弹出框和提示框感兴趣的小伙伴们可以参考一下

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
< 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" >×</ span ></ button >
           < h4 class = "modal-title" id = "myModalLabel" >新增</ 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

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

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

?
1
2
3
< div class = "modal-dialog" role = "document" >
< div class = "modal-dialog modal-lg" role = "document" >
< div class = "modal-dialog modal-full" role = "document" >

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

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

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

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

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

3、效果展示
新增效果

 

 

编辑效果

 

 

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
( 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">×</span><span class="sr-only">Close</span></button>' +
                      '<h4 class="modal-title" id="modalLabel">[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">×</span><span class="sr-only">Close</span></button>' +
                      '<h4 class="modal-title" id="modalLabel">[Title]</h4>' +
                    '</div>' +
                    '<div class="modal-body">' +
                    '</div>' +
                  '</div>' +
                '</div>' +
              '</div>' ;
     var reg = new RegExp( "\\[([^\\[\\]]*?)\\]" , '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这个属性对应的方法。还是来看看如何调用吧:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//注册删除按钮的事件
$( "#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的引用了。然后就是在相应的地方调用了。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$( "#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

    <link href="~/Styles/sweetalert.css" rel="stylesheet" />
    <script src="~/Scripts/sweetalert.min.js"></script>
(3)js使用
     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 

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

(2)、js初始化

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

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

(3)、使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//初始化编辑按钮
$( "#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大同小异,首先引入组件:

?
1
2
3
<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" />

初始化它的位置

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

然后js里面使用如下:

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

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

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

很简单很强大有木有~~

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

转载于:https://www.cnblogs.com/zhangxiaolei521/p/5683649.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS组件Bootstrap实现弹出框和提示框效果代码 的相关文章

随机推荐

  • openGauss学习笔记-35 openGauss 高级数据管理-ALTER TABLE语句

    文章目录 openGauss学习笔记 35 openGauss 高级数据管理 ALTER TABLE语句 35 1 语法格式 35 2 参数说明 35 3 示例 openGauss学习笔记 35 openGauss 高级数据管理 ALTER
  • Html网页打开自动弹出显示内容或图片

    直接复制到要弹出的页面就可
  • K站中转内最便宜的航班

    LeetCode 787 K站中转内便宜的航班 有 n 个城市通过 m 个航班连接 每个航班都从城市 u 开始 以价格 w 抵达 v 现在给定所有的城市和航班 以及出发城市 src 和目的地 dst 你的任务是找到从 src 到 dst 最
  • gRPC-Go源码解读一 客户端请求链路分析

    最近在学习gRPC相关的知识 为啥要学呢 因为一直在用 古人云 工欲善其事 必先利其器 为此 花了不少时间阅读gRPC Go的源码 收货甚多 比如透过服务发现和负载均衡这俩组件来学习复杂模块之间低耦合高内聚的设计方法 透过bdp采样与htt
  • 生信分析是个什么玩意儿?

    生信小白 老板最近说 要搞搞高大上的全基因组测序 让我去做测序数据分析 可我都不懂哇 生信猿 这不就是生物信息分析嘛 搭建集群 搭建流程 跑跑数据 生信小白 听说你有一个朋友很厉害 可以让他教教我吗 生信猿 你说的是西克孚肉吧 他可是生信方
  • 打开文档时显示:loading UIxml file is failed.for more information, please use KDebugConsole or read logs.

    今天新建一个文档时候 在我打开图片时候报错了 关闭这个页面后 重新打开文档 报了以下错误 点击OK后 而后看到其他人的方法 先看其他软件能否打开 都打不开 就重装系统 要是只有这个打不开就卸载了重新安装WPS 重装系统是不可能重装的 安装W
  • 初识Java

    Java之父 詹姆斯 高斯林 Write once Run anywhere jdk jre jvm的关系 jdk Java开发工具 jre Java运行环境 jvm Java虚拟机 xxx java程序的运行 首先javac xxx ja
  • 【Protobuf】pb中类型字段不匹配问题

    文章目录 背景 结论 原始数据 测试1 测试2 背景 客户端更新proto 新增message字段 探索新增字段的数据类型和标签对服务端反序列化数据的影响 结论 新增字段数据类型与服务端相同标签数据类型 不同 无法获取数据 但是不报错 相同
  • Request应用

    request getRequestDispatcher url 的url可以是相对路径也可以是绝对路径 getRequestDispatcher分成两种 可以用request调用 也可以用getServletContext 调用 不同的是
  • Apache Tomcat 官网下载(保姆级教程)

    目录 前言 一 环境说明 二 官网下载 1 进入官网 2 选择下载版本 3 进入版本页面 4 选择下载 总结 前言 Apache Tomcat 它是目前使用最广泛的Java应用服务器之一 我们在下载的时候千万不要去第三方网站 可以直接官网下
  • 前端下载二进制流pdf文件,下载成功,打开空白问题解决

    做pdf文件下载的时候 后端返回了二进制数据流 前端在发起请求时需要设置responseType arraybuffer 或者blob类型才可以 具体操作可以看我之前的文章 传送门 一开始对接的时候下载打开都是正常的 过后突然就不行了 能下
  • MySQL-----事务管理

    文章目录 前言 一 什么是事务 二 为什么会出现事务 三 事物的版本支持 四 事物的提交方式 五 事务常见的操作方式 六 事务隔离级别 如何理解隔离性1 隔离级别 查看与设置隔离性 读未提交 Read Uncommitted 读提交 Rea
  • SpringMVC工作原理

    文章搬运自 https www cnblogs com xiaoxi p 6164383 html SpringMVC工作原理 SpringMVC的工作原理图 SpringMVC流程 1 用户发送请求至前端控制器DispatcherServ
  • Android 13 - binder阅读(5)- 使用ServiceManager注册服务2

    上一篇笔记我们看到了binder transaction 这个方法很长 这一篇我们将把这个方法拆分开来看binder transaction做了什么 从而学习binder是如何跨进程通信的 1 binder transaction stat
  • ajax中load方法,jQuery中ajax的load()方法用法实例

    本文实例讲述了jQuery中ajax的load 方法用法 分享给大家供大家参考 具体分析如下 此函数jQuery中简单而功能强大的ajax方法 它可以从服务器加载内容 然后写入匹配元素 语法结构 selector load URL data
  • 将sql service数据库中的数据迁移到clickhourse中

    首先我们要根据sql server数据库的表在clickhourse中对应的建立表 CREATE TABLE IF NOT EXISTS default PosSalSheet SheetID String PosType Int8 Sta
  • 操作系统 3.2 进程概念

    单选题 共10题 下面关于进程的叙述 最不符合操作系统对进程的理解 A 进程是多程序环境中的完整的程序 B 进程可以由程序 数据和进程控制块描述 C 进程和程序是多对多的关系 D 进程是程序在一个数据集合上运行的过程 它是系统进行资源分配和
  • STM32 主从蓝牙模块配置

    前言 最近在调试小车的时候 突然想要用两个蓝牙进行单片机和电脑的交互 之前一直用的都是从机的蓝牙 这里因为需要双机通信 所以也就顺便查询了一些资料 了解一下主从蓝牙模块的使用 以及双机通信的一些使用 话不多说 开始 AT指令 蓝牙模块需要通
  • react强制组件刷新_如何强制刷新React子组件:简单方法

    react强制组件刷新 Note As of React 16 componentWillReceiveProps is deprecated meaning if you are using that version or higher
  • JS组件Bootstrap实现弹出框和提示框效果代码

    这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码 对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言 对于Web开发人员 弹出框和提示框的使用肯定不会陌生 比如常见的表格新增和编辑功能 一般常见的主要有两种处理方式 行