웹 프론트엔드 JS 튜토리얼 JS 구성 요소 부트스트랩은 팝업 상자 및 프롬프트 상자 효과 code_javascript 기술을 구현합니다.

JS 구성 요소 부트스트랩은 팝업 상자 및 프롬프트 상자 효과 code_javascript 기술을 구현합니다.

May 16, 2016 pm 03:27 PM
bootstrap js 팝업 상자 프롬프트 상자

前言:对于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 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

<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 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">&times;</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("\\[([^\\[\\]]*&#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常用弹出和提示框的效果以及使用小结,希望对大家的学习有所帮助。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Eclipse에 부트스트랩을 도입하는 방법 Eclipse에 부트스트랩을 도입하는 방법 Apr 05, 2024 am 02:30 AM

5단계로 Eclipse에 Bootstrap을 소개합니다. Bootstrap 파일을 다운로드하고 압축을 풉니다. Bootstrap 폴더를 프로젝트로 가져옵니다. 부트스트랩 종속성을 추가합니다. Bootstrap CSS 및 JS를 HTML 파일로 로드합니다. 사용자 인터페이스를 향상하려면 Bootstrap을 사용해 보세요.

권장 사항: 우수한 JS 오픈 소스 얼굴 감지 및 인식 프로젝트 권장 사항: 우수한 JS 오픈 소스 얼굴 감지 및 인식 프로젝트 Apr 03, 2024 am 11:55 AM

얼굴 검출 및 인식 기술은 이미 상대적으로 성숙하고 널리 사용되는 기술입니다. 현재 가장 널리 사용되는 인터넷 응용 언어는 JS입니다. 웹 프런트엔드에서 얼굴 감지 및 인식을 구현하는 것은 백엔드 얼굴 인식에 비해 장점과 단점이 있습니다. 장점에는 네트워크 상호 작용 및 실시간 인식이 줄어 사용자 대기 시간이 크게 단축되고 사용자 경험이 향상된다는 단점이 있습니다. 모델 크기에 따라 제한되고 정확도도 제한됩니다. js를 사용하여 웹에서 얼굴 인식을 구현하는 방법은 무엇입니까? 웹에서 얼굴 인식을 구현하려면 JavaScript, HTML, CSS, WebRTC 등 관련 프로그래밍 언어 및 기술에 익숙해야 합니다. 동시에 관련 컴퓨터 비전 및 인공지능 기술도 마스터해야 합니다. 웹 측면의 디자인으로 인해 주목할 가치가 있습니다.

부트스트랩 매개 효과 테스트 결과를 Stata에서 읽는 방법 부트스트랩 매개 효과 테스트 결과를 Stata에서 읽는 방법 Apr 05, 2024 am 01:48 AM

Stata에서 부트스트랩 매개 효과 테스트의 해석 단계: 계수의 부호를 확인합니다. 매개 효과의 양수 또는 음수 방향을 결정합니다. 검정 p값: 0.05 미만이면 매개효과가 유의미하다는 것을 나타냅니다. 신뢰 구간을 확인하십시오. 0을 포함하지 않으면 중재 효과가 유의하다는 것을 나타냅니다. 중앙값 p-값 비교: 0.05 미만은 매개 효과의 중요성을 더욱 뒷받침합니다.

부트스트랩에 아이디어를 도입하는 방법 부트스트랩에 아이디어를 도입하는 방법 Apr 05, 2024 am 02:33 AM

IntelliJ IDEA에 Bootstrap을 도입하는 단계: 새 프로젝트를 만들고 "웹 애플리케이션"을 선택합니다. "부트스트랩" Maven 종속성을 추가합니다. HTML 파일을 만들고 Bootstrap 참조를 추가합니다. Bootstrap CSS 파일의 실제 경로로 바꾸십시오. Bootstrap 스타일을 사용하려면 HTML 파일을 실행하세요. 팁: CDN을 사용하여 Bootstrap을 가져오거나 HTML 파일 템플릿을 사용자 지정할 수 있습니다.

대형모델간 75만 라운드 1대1 대결, GPT-4가 우승, 라마3가 5위 대형모델간 75만 라운드 1대1 대결, GPT-4가 우승, 라마3가 5위 Apr 23, 2024 pm 03:28 PM

Llama3에 대해 새로운 테스트 결과가 공개되었습니다. 대형 모델 평가 커뮤니티 LMSYS가 공개한 대형 모델 순위 목록에서 Llama3는 5위에 올랐으며, 영어 부문에서는 GPT-4와 함께 공동 1위를 차지했습니다. 다른 벤치마크와는 그림이 다릅니다. 이 목록은 모델 간 1:1 대결을 기반으로 하며, 네트워크 전체의 평가자들이 각자의 제안과 점수를 내립니다. 결국 Llama3가 5위를 차지했고, GPT-4와 Claude3 Super Cup Opus의 세 가지 버전이 그 뒤를 이었습니다. 영어 싱글 목록에서는 Llama3가 Claude를 제치고 GPT-4와 동점을 기록했습니다. 이 결과에 대해 Meta의 수석 과학자 LeCun은 매우 기뻐했으며 트윗을 통해 다음과 같이 말했습니다.

부트스트랩을 사용하여 중재 효과를 테스트하는 방법 부트스트랩을 사용하여 중재 효과를 테스트하는 방법 Apr 05, 2024 am 03:57 AM

부트스트랩 검정은 리샘플링 기술을 사용하여 통계 검정의 신뢰성을 평가하고 매개 효과의 유의성을 입증하는 데 사용됩니다. 먼저 직접 효과, 간접 효과 및 매개 효과의 신뢰 구간을 계산하고 두 번째로 유의성을 계산합니다. Baron and Kenny 또는 Sobel 방법에 따라 매개 유형을 결정하고 최종적으로 자연 간접 효과에 대한 신뢰 구간을 추정합니다.

부트스트랩 조정 테스트 결과를 읽는 방법 부트스트랩 조정 테스트 결과를 읽는 방법 Apr 05, 2024 am 03:30 AM

부트스트랩 매개 검정은 데이터를 여러 번 리샘플링하여 매개 효과를 평가합니다. 간접 효과 신뢰 구간: 매개 효과의 추정 범위를 나타냅니다. 구간에 0이 포함되지 않으면 효과가 유의합니다. p-값: 신뢰 구간에 0이 포함되지 않을 확률을 평가하며, 0.05 미만의 값은 유의함을 나타냅니다. 샘플 크기: 분석에 사용된 데이터 샘플 수입니다. 부트스트랩 서브샘플링 시간: 반복 샘플링 횟수(500-2000회)입니다. 신뢰 구간에 0이 포함되지 않고 p-값이 0.05보다 작은 경우 매개 효과가 유의하며 이는 매개 변수가 독립 변수와 종속 변수 간의 관계를 설명한다는 것을 나타냅니다.

부트스트랩과 스프링부트의 차이점은 무엇입니까 부트스트랩과 스프링부트의 차이점은 무엇입니까 Apr 05, 2024 am 04:00 AM

Bootstrap과 Spring Boot의 주요 차이점은 Bootstrap은 웹 사이트 스타일링을 위한 경량 CSS 프레임워크인 반면, Spring Boot는 Java 웹 애플리케이션 개발을 위한 강력하고 즉시 사용 가능한 백엔드 프레임워크라는 것입니다. Bootstrap은 CSS와 HTML을 기반으로 하고, Spring Boot는 Java와 Spring 프레임워크를 기반으로 합니다. Bootstrap은 웹 사이트의 모양과 느낌을 만드는 데 중점을 두는 반면 Spring Boot는 백엔드 기능에 중점을 둡니다. Spring Boot는 Bootstrap과 통합되어 모든 기능을 갖춘 아름다운 환경을 만들 수 있습니다.

See all articles