2014-04-21 15 views
12

Tôi không thể bắt sự kiện hiển thị cho hộp thoại bootbox.confirm để thực hiện một số điều chỉnh css cho hộp thoại trước khi hiển thị.Sử dụng hộp khởi động sự kiện hiển thị không được kích hoạt

tôi đã cố gắng những thứ như sau nhưng không thành công:

$(document).on("show.bs.modal", function (event) {...}); 
$(document).on("show", function (event) {...}); 
$(document).on("show", ".bootbox", function (event) {...}); 

Trả lời

1

Tôi cũng muốn sử dụng một chức năng toàn cầu như:

function bootbox_confirm(msg, callback_success, callback_cancel) { 
    var d = bootbox.confirm({message:msg, show:false, callback:function(result) { 
     if (result) 
      callback_success(); 
     else if(typeof(callback_cancel) == 'function') 
      callback_cancel(); 
    }}); 

    d.on("show.bs.modal", function() { 
     //css afjustment for confirm dialogs 
     alert("before show"); 
    }); 
    return d; 
} 

và gọi nó theo cách này:

bootbox_confirm("my message", function(){alert('ok')}, function(){alert('cancel')}).modal('show'); 

hoặc khi không có logic để hủy:

bootbox_confirm("my message", function(){alert('ok')}).modal('show'); 
+1

Tôi muốn mọi người sẽ bình luận về lý do tại sao họ nghĩ rằng câu trả lời là xấu thay vì chỉ downvoting, đặc biệt là nếu câu trả lời được chấp nhận (có nghĩa là nó làm việc cho người hỏi). –

+0

@AustinSchmidt Tôi nghĩ đó là bởi vì anh ta chưa bao giờ xác định rằng câu trả lời cần thiết để có một chức năng toàn cầu. Anh lấy câu trả lời đã làm việc, và áp dụng nó cho câu trả lời của chính mình sau đó, và sau đó đánh dấu nó là chính xác. Tôi không thực sự quan tâm đến nó một cách cá nhân (tôi đã viết câu trả lời cao nhất), nhưng tôi có thể thấy những người khác có thể gặp vấn đề gì với điều đó. – codephobia

2

bạn có thể làm như thế này:

var dialog = bootbox.dialog("foo", [], {show: false}); 

dialog.on("shown", function() { 
// 
}); 

dialog.modal("show"); 
+1

Bạn chưa 't làm việc, nhưng "shown.bs.modal" đã làm – AXMIM

36

này nên làm việc cho bạn sử dụng Bootbox 4.xx và Bootstrap 3. xx:

var box = bootbox.dialog({ 
    message: '', 
    title: '', 
    buttons: {}, 
    show: false 
}); 

box.on("shown.bs.modal", function() { 
    alert('it worked!'); 
}); 

box.modal('show'); 

hay như thế này:

$(document).on("shown.bs.modal", function (event) {...}); 
+2

Tôi không chắc tại sao câu trả lời "đúng" hiện tại được chọn. Điều này ** show.bs.modal ** làm việc cho tôi - trong khi ** show.bs.modal ** không –

+3

Tôi thấy rằng sự kiện show.bs.modal không hoạt động khi bạn chưa đặt 'show 'tùy chọn trên hộp thoại hoặc đặt nó thành true. Hộp thoại được tự động hiển thị sau đó, do đó thậm chí không được kích hoạt. Nếu đặt tùy chọn hiển thị thành sai, như trong ví dụ này và hiển thị phương thức thủ công bằng 'box.modal ('show')', thì sự kiện show.bs.modal cũng được kích hoạt. – rolandow

+0

Đây phải là câu trả lời đúng. –

Các vấn đề liên quan