Phương thức Bootstrap: đóng hiện tại, mở mới


84

Tôi đã xem xét một thời gian, nhưng tôi không thể tìm thấy một giải pháp cho điều này. Tôi muốn những thứ sau:

  • Mở một URL bên trong một phương thức Bootstrap. Tôi có khóa học này đang làm việc hiệu quả. Vì vậy, nội dung được tải động.
  • Khi người dùng nhấn một nút bên trong phương thức này, tôi muốn phương thức hiện tại ẩn và ngay sau đó, tôi muốn một phương thức mới mở với URL mới (người dùng đã nhấp vào). Nội dung của phương thức thứ 2 cũng được tải động.
  • Nếu người dùng sau đó đóng phương thức thứ 2 đó, phương thức đầu tiên phải quay lại lần nữa.

Tôi đã nhìn chằm chằm vào điều này trong nhiều ngày, hy vọng ai đó có thể giúp tôi.

Cảm ơn trước.


Bootstrap 2 hay 3? Bạn có thể thiết lập JS Fiddle với những gì bạn có không?
Tim Wasson

Bootstrap 2.3.1. Tôi nghĩ tôi không thể thiết lập một Fiddle JS vì nội dung động
Eelco Luurtsema

Câu trả lời:


59

Nếu không nhìn thấy mã cụ thể, rất khó để cung cấp cho bạn câu trả lời chính xác. Tuy nhiên, từ tài liệu Bootstrap, bạn có thể ẩn phương thức như sau:

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

Sau đó, hiển thị một phương thức khác sau khi ẩn:

$('#myModal').on('hidden.bs.modal', function () {
  // Load up a new modal...
  $('#myModalNew').modal('show')
})

Bạn sẽ phải tìm cách đẩy URL sang cửa sổ phương thức mới, nhưng tôi cho rằng điều đó sẽ không đáng kể. Nếu không nhìn thấy mã, thật khó để đưa ra một ví dụ về điều đó.


Đủ lạ, tôi đã nhận nó làm việc với Bootstrap 3. Tôi nghĩ rằng mã của tôi đã có một cuộc xung đột với Bootstrap Tooltips, và được thay đổi trong phiên bản 3. Cảm ơn
Eelco Luurtsema

8
Trên bootstrap v3 sự kiện là 'hidden.bs.modal'
coure2011

3
Một giải pháp với loại bỏ dữ liệu thanh lịch hơn nhiều (ít nhất là vào năm 2015) và không yêu cầu bất kỳ javascript không phải bootstrap nào.
Manuel Arwed Schmidt

Cảm ơn @ coure2011
Capcom

4
data-toggle = "modal" data-target = "# targetmodal" data-allow = "modal" Điều này hoạt động tốt.
Sushan

79

Tôi biết đây là một câu trả lời muộn, nhưng nó có thể hữu ích. Đây là một cách thích hợp và rõ ràng để thực hiện việc này, như @ karima đã đề cập ở trên. Bạn thực sự có thể kích hoạt hai chức năng cùng một lúc; triggerdismissphương thức.

Đánh dấu HTML;

<!-- Button trigger modal -->
<ANY data-toggle="modal" data-target="TARGET">...</ANY>

<div class="modal fade" id="SELECTOR" tabindex="-1">
  <div class="modal-dialog">
   <div class="modal-content">
    <div class="modal-body"> ... </div>
     <div class="modal-footer">           <!-- ↓ -->  <!--      ↓      -->
      <ANY data-toggle="modal" data-target="TARGET-2" data-dismiss="modal">...</ANY>
     </div>
   </div>
  </div>
</div>

Bản giới thiệu


25
Không bueno vì bạn sẽ nhận thấy rằng, sau khi mở phương thức đầu tiên, việc cuộn trang hoạt động bình thường, nhưng nếu bạn khởi chạy một phương thức khác từ một phương thức hiện có, thì cuộn trang sẽ chuyển sang nền. Đây là một vấn đề lớn nếu bạn có một phương thức cần được cuộn (ví dụ: nếu bạn đang xem trên thiết bị di động).
Gravity Grave

Tôi có một vấn đề rất giống nhau nhưng ở góc độ. Bạn có biết làm thế nào để làm điều tương tự như bạn đã làm ở đây nhưng trong một bộ điều khiển góc và sử dụng các thuộc tính templateUrlwindowClass?
John R

1
Cảm ơn - làm việc cho tôi. Vấn đề chính đối với tôi là tôi đã bỏ lỡ data-dismiss="modal"nút
FDisk

@Mahmoud, có cách nào để tránh loại hiệu ứng rung khi tải phương thức thứ hai từ một phương thức không? và làm thế nào để tránh cuộn thừa?
Arun Xavier

Đó là sự cố của trình duyệt, trong Google Chrome "rung" khi thay đổi phương thức, đóng hoặc mở. thử -webkit-backface-visibility: hidden;trên html, body css
Máxima Alekz 15/09/17

36

Nó không chính xác là phản hồi nhưng nó hữu ích khi bạn muốn đóng phương thức hiện tại và mở một phương thức mới.

Trong html ở cùng một nút, bạn có thể yêu cầu đóng phương thức hiện tại với loại bỏ dữ liệu và mở một phương thức mới trực tiếp với data-target:

<button class="btn btn-success" 
data-toggle="modal" 
data-target="#modalRegistration" 
data-dismiss="modal">Register</button>

4
Cảm ơn vì ý tưởng này
Jitendra Vyas

2
Vấn đề data-dismiss="modal"là, nó sẽ chuyển nội dung của bạn sang trái khi bạn đóng phương thức thứ hai.
Kuldeep Dangi

1
hmmmm. phương pháp này không hiệu quả với tôi. Cái đầu tiên biến mất nhưng cái thứ 2 không bao giờ xuất hiện
KevinDeus

Tôi không chắc chắn những gì vấn đề bạn đã có, Kevin, nhưng nó làm việc tốt cho tôi với Bootstrap 3. biến mất phương thức đầu tiên và người kia mở tốt :)
RolandiXor

Làm việc tuyệt vời cho tôi! Và giải pháp rất đơn giản. Cảm ơn!
guero64

10

Vấn đề với data-dismiss="modal" là nó sẽ chuyển nội dung của bạn sang trái

Tôi đang chia sẻ những gì hiệu quả với tôi, trạng thái sự cố đang mở pop1từpop2

MÃ JS

var showPopup2 = false;
$('#popup1').on('hidden.bs.modal', function () {
    if (showPopup2) {
        $('#popup2').modal('show');
        showPopup2 = false;
    }
});

$("#popup2").click(function() {
    $('#popup1').modal('hide');
    showPopup2 = true;
});

2
một giải pháp đơn giản như vậy :)
Geoff

9

Tôi sử dụng phương pháp này:

$(function() {
  return $(".modal").on("show.bs.modal", function() {
    var curModal;
    curModal = this;
    $(".modal").each(function() {
      if (this !== curModal) {
        $(this).modal("hide");
      }
    });
  });
});

4

Bằng cách sử dụng đoạn mã sau, bạn có thể ẩn phương thức đầu tiên và mở ngay phương thức thứ hai, bằng cách sử dụng chiến lược tương tự, bạn có thể ẩn phương thức thứ hai và hiển thị phương thức đầu tiên.

$("#buttonId").on("click", function(){
    $("#currentModalId").modal("hide");
    $("#currentModalId").on("hidden.bs.modal",function(){
    $("#newModalId").modal("show");
    });
});

Sửa chữa các vấn đề cuộn cũng
Richard Housham


4
data-dismiss="modal" 

nó được sử dụng để đóng mô hình đã mở hiện có. bạn có thể đặt nó thành mô hình mới


Tôi không hiểu điều này hoạt động trên tất cả các phiên bản của bootstrap. Phương thức loại bỏ trong trường hợp của tôi khiến phương thức đóng và mở phương thức mới, nhưng nó cũng xóa lớp phương thức khỏi nội dung và sau đó tôi không thể cuộn phương thức xuống.
Bodokh

4

Như đã đề cập ở trên Trong html trong cùng một nút, bạn có thể yêu cầu đóng phương thức hiện tại với loại bỏ dữ liệu và mở một phương thức mới trực tiếp với data-target:

<button class="btn btn-success" data-toggle="modal" data-target="#modalRegistration" data-dismiss="modal">Register</button>

Nhưng điều này sẽ khiến thanh cuộn biến mất và bạn sẽ nhận thấy rằng nếu phương thức thứ hai dài hơn phương thức đầu tiên

Vì vậy, giải pháp là thêm kiểu sau trong kiểu nội tuyến phương thức:

Style = "overflow-y : scroll ; "


1
nó làm việc cho tôi: D
Gloria Mahena

2

Với BootStrap 3, bạn có thể thử điều này: -

var visible_modal = jQuery('.modal.in').attr('id'); // modalID or undefined
if (visible_modal) { // modal is active
    jQuery('#' + visible_modal).modal('hide'); // close modal
}

Đã thử nghiệm hoạt động với: http://getbootstrap.com/javascript/#modals (trước tiên hãy nhấp vào "Khởi chạy Phương thức Demo").


3
Tôi không nghĩ bạn cần một .attrchút, phải không? Điều này sẽ không hoạt động tốt? var visible_modal = jQuery('.modal.in'); if (visible_modal) { visible_modal.modal('hide'); }.
Paul D. Waite

2

Tôi cũng gặp phải vấn đề tương tự và giải pháp của tôi chỉ là nếu hộp thoại phương thức có thuộc tính [role = "hộp thoại"]:

/*
* Find and Close current "display:block" dialog,
* if another data-toggle=modal is clicked
*/
jQuery(document).on('click','[data-toggle*=modal]',function(){
  jQuery('[role*=dialog]').each(function(){
    switch(jQuery(this).css('display')){
      case('block'):{jQuery('#'+jQuery(this).attr('id')).modal('hide'); break;}
    }
  });
});

1
jsfiddle.net/e6x4hq9h/7 Tôi đã thử điều này và nó hoạt động lần đầu tiên khi tôi mở phương thức nhưng không hoạt động lần sau.
Joshua Dickerson

2

Tôi đã gặp sự cố tương tự với @Gravity Grave, theo đó tính năng cuộn không hoạt động nếu bạn sử dụng

data-toggle="modal" data-target="TARGET-2" 

kết hợp với

data-dismiss="modal"

Cuộn không hoạt động chính xác và hoàn nguyên để cuộn trang hơn là phương thức. Điều này là do loại bỏ dữ liệu loại bỏ lớp phương thức-mở khỏi thẻ.

Giải pháp của tôi cuối cùng là đặt html của thành phần bên trong trên phương thức và sử dụng css để làm mờ văn bản vào / ra.


1

Sử dụng chức năng nhấp chuột:

$('.btn-editUser').on('click', function(){
    $('#viewUser').modal('hide'); // hides modal with id viewUser 
    $('#editUser').modal('show'); // display modal with id editUser
});

Đứng lên:

Đảm bảo rằng phương thức bạn muốn hiển thị là một phương thức độc lập.


1

Trong phương thức đầu tiên:

thay thế liên kết loại bỏ phương thức trong chân trang bằng liên kết đóng bên dưới.

<div class="modal-footer">
      <a href="#"  data-dismiss="modal" class="btn btn-primary" data-toggle="modal" data-target="#second_model_id">Close</a>
</div>

Trong phương thức thứ hai:

Sau đó, phương thức thứ hai thay thế div trên bằng thẻ div bên dưới.

<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="add text for disabled people here" aria-hidden="true" id="second_model_id">

1

Gặp vấn đề tương tự, viết điều này ở đây để phòng trường hợp ai đó trong tương lai tình cờ gặp phải vấn đề này và gặp sự cố với nhiều phương thức phải có cuộn (Tôi đang sử dụng Bootstrap 3.3.7)

Những gì tôi đã làm là có một nút như thế này bên trong phương thức đầu tiên của tôi:

<div id="FirstId" data-dismiss="modal" data-toggle="modal" data-target="#YourModalId_2">Open modal</div>

Nó sẽ ẩn phương thức đầu tiên và sau đó hiển thị phương thức thứ hai, và trong phương thức thứ hai, tôi sẽ có một nút đóng trông như thế này:

<div id="SecondId" data-dismiss="modal" data-toggle="modal" data-target="#YourModalId_1">Close</div>

Vì vậy, điều này sẽ đóng phương thức thứ hai và mở phương thức đầu tiên và để thực hiện công việc cuộn, tôi đã thêm vào tệp .css của mình dòng này:

.modal {
overflow: auto !important;
}

Tái bút: Chỉ là một lưu ý nhỏ, bạn phải có các phương thức này riêng biệt, phương thức phụ không thể được lồng vào phương thức đầu tiên khi bạn ẩn phương thức đầu tiên

Vì vậy, đây là ví dụ đầy đủ dựa trên ví dụ về phương thức bootstrap:

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
  Launch demo modal
</button>

<!-- Modal 1 -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        Add lorem ipsum here
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-primary" data-dismiss="modal" data-toggle="modal" data-target="#exampleModal2">
          Open second modal
        </button>
      </div>
    </div>
  </div>
</div>

<!-- Modal 2 -->
<div class="modal fade" id="exampleModal2" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal"  data-toggle="modal" data-target="#exampleModal">Close</button>
      </div>
    </div>
  </div>
</div>

1

Thử đi

    $('#model1').modal('hide');
setTimeout(function(){
    $('#modal2').modal('show');
},400);

1
Điều này thực sự tốt hơn so với giải pháp được chấp nhận, vì không có người nghe nào sẽ bị ràng buộc mãi mãi với sự kiện phương thức đóng.
Luís Henriques

0
$("#buttonid").click(function(){
    $('#modal_id_you_want_to_hid').modal('hide')
});

// same as above button id
$("#buttonid").click(function(){
$('#Modal_id_You_Want_to_Show').modal({backdrop: 'static', keyboard: false})});

$ ("# mông"). click (function () {$ ('# modal_id_you_want_to_hid'). modal ('hide')}); // giống như nút trên id $ ("# môngnid"). click (function () {$ ('# Modal_id_You_Want_to_Show'). modal ({backdrop: 'static', keyboard: false})})
Ajay Kabariya

0

Tôi sử dụng một cách khác:

$('#showModal').on('hidden.bs.modal', function() {
        $('#easyModal').on('shown.bs.modal', function() {
            $('body').addClass('modal-open');
        });
    });

0

Nếu bạn muốn đóng phương thức đã mở trước đó trong khi mở phương thức mới thì bạn phải thực hiện điều đó từ javascript / jquery bằng cách đóng phương thức đang mở hiện tại trước và sau đó đưa ra khoảng thời gian chờ 400ms để cho phép nó đóng và sau đó mở phương thức mới như đoạn mã dưới đây :

$('#currentModal').modal('hide');

setTimeout(function() {
       //your code to be executed after 200 msecond 
       $('#newModal').modal({
           backdrop: 'static'//to disable click close
   })
}, 400);//delay in miliseconds##1000=1second

Nếu bạn cố gắng làm điều đó với data-dismiss="modal"thì nó sẽ gặp vấn đề về cuộn như được đề cập bởi @gravity và @kuldeep trong nhận xét.


0

Không có câu trả lời nào giúp tôi vì tôi muốn đạt được điều gì đó giống hệt như đã đề cập trong câu hỏi.

Tôi đã tạo một plugin jQuery cho mục đích này.

/*
 * Raj: This file is responsible to display the modals in a stacked fashion. Example:
 * 1. User displays modal A
 * 2. User now wants to display modal B -> This will not work by default if a modal is already displayed
 * 3. User dismisses modal B
 * 4. Modal A should now be displayed automatically -> This does not happen all by itself 
 * 
 * Trying to solve problem for: http://stackoverflow.com/questions/18253972/bootstrap-modal-close-current-open-new
 * 
 */

var StackedModalNamespace = StackedModalNamespace || (function() {
    var _modalObjectsStack = [];
    return {
        modalStack: function() {
            return _modalObjectsStack;
        },
        currentTop: function() {
            var topModal = null;
            if (StackedModalNamespace.modalStack().length) {
                topModal = StackedModalNamespace.modalStack()[StackedModalNamespace.modalStack().length-1];
            }
            return topModal;
        }
    };
}());

// http://stackoverflow.com/a/13992290/260665 difference between $.fn.extend and $.extend
jQuery.fn.extend({
    // https://api.jquery.com/jquery.fn.extend/
    showStackedModal: function() {
        var topModal = StackedModalNamespace.currentTop();
        StackedModalNamespace.modalStack().push(this);
        this.off('hidden.bs.modal').on('hidden.bs.modal', function(){   // Subscription to the hide event
            var currentTop = StackedModalNamespace.currentTop();
            if ($(this).is(currentTop)) {
                // 4. Unwinding - If user has dismissed the top most modal we need to remove it form the stack and display the now new top modal (which happens in point 3 below)
                StackedModalNamespace.modalStack().pop();
            }
            var newTop = StackedModalNamespace.currentTop();
            if (newTop) {
                // 3. Display the new top modal (since the existing modal would have been hidden by point 2 now)
                newTop.modal('show');
            }
        });
        if (topModal) {
            // 2. If some modal is displayed, lets hide it
            topModal.modal('hide');
        } else {
            // 1. If no modal is displayed, just display the modal
            this.modal('show');
        }
    },
});

Làm việc Fiddle để tham khảo, JSFiddle: https://jsfiddle.net/gumdal/67hzgp5c/

Bạn chỉ cần gọi với API mới của tôi " showStackedModal()" thay vì chỉ " modal('show')". Phần ẩn vẫn có thể giống như trước và cách tiếp cận xếp chồng của việc hiển thị và ẩn các phương thức sẽ tự động được thực hiện.


0

Giải pháp đơn giản và thanh lịch cho BootStrap 3.x. Phương thức tương tự có thể được sử dụng lại theo cách này.

$("#myModal").modal("hide");
$('#myModal').on('hidden.bs.modal', function (e) {
   $("#myModal").html(data);
   $("#myModal").modal();
   // do something more...
}); 

0

nếu bạn sử dụng mdb, hãy sử dụng mã này

    var visible_modal = $('.modal.show').attr('id'); // modalID or undefined
    if (visible_modal) { // modal is active
        $('#' + visible_modal).modal('hide'); // close modal
    }

0
<div class="container">
  <h1>Bootstrap modal: close current, open new</h1>
  <p class="text-muted">
  A proper and clean way to get this done without addtional Javascript/jQuery. The main purpose of this demo is was to answer this 
  <a href="http://stackoverflow.com/questions/18253972/bootstrap-modal-close-current-open-new">question on stackoverflow</a>
  </p>
  <hr />

  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#demo-1">Launch Modal #1</button>
  <button type="button" class="btn btn-info"    data-toggle="modal" data-target="#demo-2">Launch Modal #2</button>
  <button type="button" class="btn btn-default" data-toggle="modal" data-target="#demo-3">Launch Modal #3</button>

  <!-- [ Modal #1 ] -->
  <div class="modal fade" id="demo-1" tabindex="-1">
    <div class="modal-dialog">
     <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal"><i class="icon-xs-o-md"></i></button>
      <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 caps"><strong>Demo Modal #1</strong></h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Input Placeholder..." />
            <span class="input-group-btn"><button class="btn btn-default" type="button">Action</button></span>
          </div>
        </div>
      </div>
       <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">&times;</button>
            <button type="button" class="btn btn-info" data-toggle="modal" data-target="#demo-2" data-dismiss="modal">Close current, Launch Modal #2</button>
            <button type="button" class="btn btn-default" data-toggle="modal" data-target="#demo-3" data-dismiss="modal">Close current, Launch Modal #3</button>
        </div>
     </div>
    </div>
  </div>

  <!-- [ Modal #2 ] -->
  <div class="modal fade" id="demo-2" tabindex="-1">
    <div class="modal-dialog">
     <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal"><i class="icon-xs-o-md"></i></button>
      <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 caps"><strong>Demo Modal #2</strong></h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Input Placeholder..." />
            <span class="input-group-btn"><button class="btn btn-default" type="button">Action</button></span>
          </div>
        </div>
      </div>
       <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">&times;</button>
            <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#demo-1" data-dismiss="modal">Close current, Launch Modal #1</button>
            <button type="button" class="btn btn-default" data-toggle="modal" data-target="#demo-3" data-dismiss="modal">Close current, Launch Modal #3</button>
        </div>
     </div>
    </div>
  </div>

  <!-- [ Modal #3 ] -->
  <div class="modal fade" id="demo-3" tabindex="-1">
    <div class="modal-dialog">
     <div class="modal-content">
      <button type="button" class="close" data-dismiss="modal"><i class="icon-xs-o-md"></i></button>
      <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 caps"><strong>Demo Modal #3</strong></h4>
      </div>
      <div class="modal-body">
        <div class="form-group">
          <div class="input-group">
            <input type="text" class="form-control" placeholder="Input Placeholder..." />
            <span class="input-group-btn"><button class="btn btn-default" type="button">Action</button></span>
          </div>
        </div>
      </div>
       <div class="modal-footer">
            <button type="button" class="btn btn-danger" data-dismiss="modal">&times;</button>
            <button type="button" class="btn btn-info" data-toggle="modal" data-target="#demo-1" data-dismiss="modal">Close current, Launch Modal #1</button>
            <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#demo-2" data-dismiss="modal">Close current, Launch Modal #2</button>
        </div>
     </div>
    </div>
  </div>

  <hr />
  <h3 class="caps">Usage:</h3>
<pre class="prettyprint">&lt;!-- Button trigger modal --&gt;
&lt;ANY data-toggle="modal" data-target="TARGET"&gt;...&lt;/ANY&gt;

&lt;div class="modal fade" id="SELECTOR" tabindex="-1"&gt;
  &lt;div class="modal-dialog"&gt;
   &lt;div class="modal-content"&gt;
    &lt;div class="modal-body"&gt; ... &lt;/div&gt;
     &lt;div class="modal-footer"&gt;           &lt;!-- ↓ --&gt;  &lt;!--      ↓      --&gt;
      &lt;ANY data-toggle="modal" data-target="TARGET-2" data-dismiss="modal"&gt;...&lt;/ANY&gt;
     &lt;/div&gt;
   &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</pre>
</div> <!-- end .container -->

<hr />
<footer class="text-center"><a href="https://twitter.com/_elmahdim">@_elmahdim</a></footer>
<br />
<br />

0

Tôi có thể hơi muộn với việc này nhưng tôi nghĩ tôi đã tìm ra giải pháp hiệu quả.

Cần thiết -

jQuery

Tất cả các chế độ có nút đóng / loại bỏ có các thuộc tính được đặt như sau:

<button type="button" class="btn close_modal" data-toggle="modal" data-target="#Modal">Close</button>  

Vui lòng xem lớp close_modal được thêm vào các lớp của nút

Bây giờ để đóng tất cả các phương thức hiện có, chúng tôi sẽ gọi

$(".close_modal").trigger("click");

Vì vậy, bất cứ nơi nào bạn muốn mở một phương thức

Chỉ cần thêm mã trên và tất cả các chế độ mở của bạn sẽ đóng lại.

Sau đó, thêm mã bình thường của bạn để mở phương thức mong muốn

$("#DesiredModal").modal();

0

Ẩn hộp thoại phương thức.

Phương pháp 1: Sử dụng Bootstrap.

$('.close').click(); 
$("#MyModal .close").click();
$('#myModalAlert').modal('hide');

Phương pháp 2: sử dụng stopPropagation().

$("a.close").on("click", function(e) {
  $("#modal").modal("hide");
  e.stopPropagation();
});

Phương pháp 3: sau khi gọi phương thức hiển thị.

$('#myModal').on('shown', function () {
  $('#myModal').modal('hide');
})

Phương pháp 4: Sử dụng CSS.

this.display='block'; //set block CSS
this.display='none'; //set none CSS after close dialog

0

Mã này, phương thức đóng đã mở, mở phương thức mới nhưng trong thời gian ngắn, phương thức mới bị đóng.

$(nameClose).modal('hide');
$(nameOpen).modal('show');

Giải pháp của tôi để mở phương thức mới sau khi đóng phương thức khác là:

function swapModals(nameClose,nameOpen) {
    $(nameClose).modal('hide');
    $(nameClose).on('hidden.bs.modal', function () {
        console.log('Fired when hide event has finished!');
        $(nameOpen).modal('show');
    });
}

0

Chỉ cần sao chép và dán mã này và bạn có thể thử nghiệm với hai phương thức. Phương thức thứ hai được mở sau khi đóng phương thức đầu tiên:

<!-- Button to Open the Modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
    Open modal
</button>

<!-- The Modal -->
<div class="modal" id="myModal">
    <div class="modal-dialog">
        <div class="modal-content">

            <!-- Modal Header -->
            <div class="modal-header">
                <h4 class="modal-title">Modal Heading</h4>
                <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>

            <!-- Modal body -->
            <div class="modal-body">
                Modal body..
            </div>

            <!-- Modal footer -->
            <div class="modal-footer">
                <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
            </div>

        </div>
    </div>
</div>



<!-- The Modal 2 -->
<div class="modal" id="myModal2">
    <div class="modal-dialog">
        <div class="modal-content">

            <!-- Modal Header -->
            <div class="modal-header">
                <h4 class="modal-title">Second modal</h4>
                <button type="button" class="close" data-dismiss="modal">&times;</button>
            </div>

            <!-- Modal body -->
            <div class="modal-body">
                Modal body..
            </div>

            <!-- Modal footer -->
            <div class="modal-footer">
                <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
            </div>

        </div>
    </div>
</div>




<script>
    $('#myModal').on('hidden.bs.modal', function () {
        $('#myModal2').modal('show')
    })
</script>

Chúc mừng!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.