Cách đóng phương thức bootstrap twitter (sau khi khởi chạy lần đầu)


91

Tôi rất là một người yêu thích, vì vậy tôi nghĩ rằng tôi đang giám sát một cái gì đó (có thể là hiển nhiên) với phương thức twitter bootstrap. Những gì tôi đang cố gắng làm là có được một phương thức chỉ khởi chạy trên thiết bị di động. Điều này hoạt động tốt với việc thêm lớp .visible-phone trên div modal. Càng xa càng tốt. Nhưng sau đó tôi muốn nó hoạt động, nghĩa là bạn có thể đóng nó bằng nút X. Và tôi không thể làm cho nút hoạt động.

<div class="modal visible-phone" id="myModal">
  <div class="modal-header">
    <button class="close" data-dismiss="modal">×</button>
    <h3>text introductory<br>want to navigate to...</h3>
 </div>
 <div class="modal-body">
    <ul class="nav">
      <li> ... list of links here </li>
    </ul>
   </div>
  </div>

Ở cuối html, tôi đặt jquery.js (đầu tiên) và bootstrap.modal.js và bootstrap.transition.js. Trên thực tế, tất cả các mô-đun bootstrap js (không bỏ lỡ một phần bao gồm). Tôi không có kinh nghiệm với js ..

Xin hãy tha thứ cho tôi nếu tôi đặt câu hỏi Q. thực sự ngu ngốc Tôi không thể tìm thấy câu trả lời cho tình huống cụ thể này trong nhật ký.

Câu trả lời:


219

$('#myModal').modal('hide') Hãy làm nó


vâng, nó đang hoạt động. Nhưng tôi không có hoạt ảnh giống như chúng tôi có bằng cách sử dụng 'data-allow = "modal"'?
Chris

ok lỗi của tôi. Trên thực tế, tôi không nhớ vấn đề tôi đã gặp phải vào thời điểm đó, bây giờ tôi sử dụng nó và nó hoạt động hoàn hảo. TY!
Chris

Tìm hiểu thêm ở đây .. stackoverflow.com/questions/10944302/...
Sanjay Kumar

6
Điều này thật kỳ lạ, phù $('#myModal').modal('show')hợp với tôi, nhưng ẩn thì không.
Charlotte,

3
@LittleBigBot hãy thử sử dụng $('#myModal').modal('toggle');thay vì
Edson Horacio Junior

27

Tôi đã gặp sự cố khi đóng hộp thoại phương thức bootstrap, nếu nó được mở bằng:

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

Tôi đã giải quyết sự cố này khi mở hộp thoại bằng liên kết sau:

<a href="#myModal" data-toggle="modal">Open my dialog</a>

Đừng quên khởi tạo:

$('#myModal').modal({show: false});

Tôi cũng đã sử dụng các thuộc tính sau cho nút đóng:

data-dismiss="modal" data-target="#myModal"

Chào artjom. Thnx! Sẽ chạy nó và đưa ra phản hồi. Bạn không sử dụng nút à để mở chế độ? Vì đó là những gì tôi đang cố gắng đạt được. Khởi chạy theo phương thức ban đầu và chỉ trên thiết bị di động để cung cấp menu điều hướng nhanh đến vị trí (không liên quan trực tiếp khi trên máy tính để bàn) đó là ý tưởng.
Monique De Haas

Có dữ liệu-bác bỏ = "modal" data-target = "# myModal" đã giải quyết vấn đề của tôi! tôn trọng!
Dheeraj Thedijje

13

Thêm lớp ẩn vào phương thức

<!-- Modal Demo -->
<div class="modal hide" id ="myModal" aria-hidden="true" >

Mã Javascript

 <!-- Use this to hide the modal necessary for loading and closing the modal-->
 <script>
     $(function(){
         $('#closeModal').click(function(){
              $('#myModal').modal('hide');
          });
      });
 </script>

 <!-- Use this to load the modal necessary for loading and closing the modal-->
 <script>
     $(function () {
         $('#myModal').modal('show');
     });
  </script>

13

.modal ('hide') ẩn một phương thức theo cách thủ công. Sử dụng mã sau để đóng mô hình bootstrap của bạn

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

Hãy xem codepen làm việc tại đây

Hoặc là

Thử ở đây


6

Hãy thử chỉ định chính xác phương thức mà nút sẽ đóng với data-target. Vì vậy, nút của bạn sẽ giống như sau:

<button class="close" data-dismiss="modal" data-target="#myModal">×</button>

Ngoài ra, bạn chỉ cần bootstrap.modal.js để có thể xóa những cái khác một cách an toàn.

Chỉnh sửa: nếu cách này không hiệu quả, hãy xóa lớp điện thoại hiển thị và kiểm tra nó trên trình duyệt PC của bạn thay vì điện thoại. Điều này sẽ cho biết liệu bạn có đang gặp lỗi javascript hoặc nếu nó là một vấn đề tương thích chẳng hạn.

Chỉnh sửa: Mã demo

<html>
<head>
    <title>Test</title>
    <link href="/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/bootstrap.modal.js" type="text/javascript"></script>

    <script type="text/javascript">
      $(document).ready(function () {
        if( navigator.userAgent.match(/Android/i)
            || navigator.userAgent.match(/webOS/i)
            || navigator.userAgent.match(/iPhone/i)
            || navigator.userAgent.match(/iPad/i)
            || navigator.userAgent.match(/iPod/i)
            || navigator.userAgent.match(/BlackBerry/i)
          ) {
          $("#myModal").modal("show");
        }

        $("#myModalClose").click(function () {
          $("#myModal").modal("hide");
        });
      });
    </script>
</head>
<body>
    <div class="modal hide" id="myModal">
      <div class="modal-header">
        <a class="close" id="myModalClose">×</a>
        <h3>text introductory<br>want to navigate to...</h3>
     </div>
     <div class="modal-body">
        <ul class="nav">
          <li> ... list of links here </li>
        </ul>
   </div>
  </div>
</body>
</html>

Xin chào @Simon Cunningham Tnx, một triệu người đã trả lời! Tôi đã đặt mục tiêu dữ liệu. Không hoạt động (thật không may) Sau đó, tôi đã xóa lớp điện thoại hiển thị. Không tạo ra sự khác biệt. code <div class = "modal hidden-phone" id = "myModal"> <div class = "modal-header"> <button class = "close" data-allow = "modal" data-target = "# myModal"> × </button> <h3> văn bản giới thiệu <br> muốn điều hướng đến ... </h3> </div> <div class = "modal-body"> <ul class = "nav"> <li> .. . danh sách các liên kết tại đây </li> <li> link2 </li> <li> link3 </li> </ul> </div> </div>code

<div class="modal visible-phone" id="myModal"> <div class="modal-header"> <button class="close" data-dismiss="modal" data-target="#myModal">×</button> <h3>text introductory<br>want to navigate to...</h3> </div> <div class="modal-body"> <ul class="nav"> <li> ... list of links here </li> <li> link2 </li> <li> link3 </li> </ul> </div> </div>
Monique De Haas

Xin lỗi vì văn bản lộn xộn ở đó;) Tôi đã làm theo lời khuyên của bạn. Có vẻ hợp lý khi cung cấp cho nút đóng một mục tiêu dữ liệu chính xác. Nhưng bằng cách nào đó tôi vẫn không làm cho nó hoạt động. Ngay cả khi vô hiệu hóa điện thoại hiển thị. Dường như không ảnh hưởng đến nút đóng. (đó là một điều tốt)
Monique De Haas

Ban đầu bạn mở phương thức của mình như thế nào? Hãy thử mở nó như bên dưới - <a data-toggle="modal" href="#myModal" class="btn"> Phương thức mở </a>
Simon Cunningham

Tôi đã thêm một số mã demo cắt giảm vào câu trả lời ban đầu của mình. Các tệp javascript và css là cục bộ cho dự án thử nghiệm của tôi, chỉ cần thay thế chúng bằng các liên kết đến của riêng bạn.
Simon Cunningham

6

Theo documentaion ẩn / chuyển đổi sẽ hoạt động. Nhưng nó không.

Đây là cách tôi đã làm nó

$('#modal-id').modal('toggle'); //Hide the modal dialog
$('.modal-backdrop').remove(); //Hide the backdrop
$("body").removeClass( "modal-open" ); //Put scroll back on the Body

1
Đây thực sự là đúng "brute force" câu trả lời .. nhưng tôi đề nghị viết lại nó để có được những hình ảnh động chính xác:$("#modal-id").modal("toggle"); $(".modal-backdrop").fadeOut('fast',function(){ $("body").removeClass( "modal-open" ); $(".modal-backdrop").remove(); });
DerDu

3

Hãy thử điều này ..

$('body').removeClass('modal-open');

$('.modal-backdrop').remove();

1

Tôi đã gặp sự cố tương tự trong iPhone hoặc máy tính để bàn, không thể đóng hộp thoại khi nhấn nút đóng.

tôi phát hiện ra rằng <button>Thẻ xác định một nút có thể nhấp và cần thiết để chỉ định thuộc tính type cho một phần tử như sau:

<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>

kiểm tra mã ví dụ cho các phương thức bootstrap tại: Trang javascript BootStrap


0

Nếu bạn có một vài phương thức được hiển thị đồng thời, bạn có thể chỉ định phương thức đích cho nút trong phương thức với các thuộc tính data-toggledata-target:

<div class="modal fade in" id="sendMessageModal" tabindex="-1" role="dialog" aria-hidden="true">
      <div class="modal-dialog modal-sm">
           <div class="modal-content">
                <div class="modal-header text-center">
                     <h4 class="modal-title">Modal Title</h4>
                     <small>Modal Subtitle</small>
                </div>
                <div class="modal-body">
                     <p>Modal content text</p>
                </div>
                <div class="modal-footer">
                     <button type="button" class="btn btn-default pull-left" data-toggle="modal" data-target="#sendMessageModal">Close</button>
                     <button type="button" class="btn btn-danger" data-toggle="modal" data-target="#sendMessageModal">Send</button>
                </div>
           </div>
      </div>
 </div>

Ở đâu đó bên ngoài mã phương thức, bạn có thể có một nút chuyển đổi khác:

<a href="index.html#" class="btn btn-default btn-xs" data-toggle="modal" data-target="#sendMessageModal">Resend Message</a>

Người dùng không thể nhấp vào nút chuyển đổi trong phương thức khi nút này bị ẩn và nó hoạt động đúng với tùy chọn "modal"cho thuộc tính data-toggle. Đề án này hoạt động tự động!


0

Đây là một đoạn mã không chỉ đóng các phương thức mà không làm mới trang mà khi nhấn enter, nó sẽ gửi phương thức và đóng mà không làm mới

Tôi đã thiết lập nó trên trang web của mình, nơi tôi có thể có nhiều phương thức và một số phương thức xử lý dữ liệu khi gửi và một số thì không. Những gì tôi làm là tạo một ID duy nhất cho mỗi phương thức xử lý. Ví dụ trong trang web của tôi:

HTML (chân trang phương thức):

 <div class="modal-footer form-footer"><br>
              <span class="caption">
                <button id="PreLoadOrders" class="btn btn-md green btn-right" type="button" disabled>Add to Cart&nbsp; <i class="fa fa-shopping-cart"></i></button>     
                <button id="ClrHist" class="btn btn-md red btn-right" data-dismiss="modal" data-original-title="" title="Return to Scan Order Entry" type="cancel">Cancel&nbsp; <i class="fa fa-close"></i></a>
              </span>
      </div>

jQUERY:

$(document).ready(function(){
// Allow enter key to trigger preloadorders form
    $(document).keypress(function(e) {       
      if(e.which == 13) {   
          e.preventDefault();   
                if($(".trigger").is(".ok")) 
                   $("#PreLoadOrders").trigger("click");
                else
                    return;
      }
    });
});

Như bạn có thể thấy, gửi này thực hiện xử lý, đó là lý do tại sao tôi có jQuery này cho phương thức này. Bây giờ, giả sử tôi có một phương thức khác trong trang web này nhưng không có quá trình xử lý nào được thực hiện và vì một phương thức được mở tại một thời điểm nên tôi đặt một phương thức khác $(document).ready()vào tập lệnh php / js toàn cục mà tất cả các trang đều nhận được và tôi cung cấp cho nút đóng của phương thức một lớp có tên ".modal-close"::

HTML:

<div class="modal-footer caption">
                <button type="submit" class="modal-close btn default" data-dismiss="modal" aria-hidden="true">Close</button>
            </div>

jQuery (bao gồm global.inc):

  $(document).ready(function(){
         // Allow enter key to trigger a particular button anywhere on page
        $(document).keypress(function(e) {
                if(e.which == 13) {
                   if($(".modal").is(":visible")){   
                        $(".modal:visible").find(".modal-close").trigger('click');
                    }
                }
         });
    });
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.