2011-07-18 33 views
13

Có cách nào để dừng sự kiện đóng đối với Hộp thoại giao diện người dùng jQuery không?Hộp thoại giao diện người dùng jQuery - tạm dừng sự kiện đóng

Tôi có một phương thức hộp thoại có biểu mẫu. Khi người dùng đóng hộp thoại, tôi muốn nhắc "Tiếp tục mà không lưu thay đổi?" [Có không]. Nút [Yes] tiếp tục và đóng hộp thoại như mong đợi. Nút [No] sẽ dừng sự kiện đóng và giữ hộp thoại mở.

Điều này có khả thi không?

Trả lời

36

Có, bạn có thể sử dụng tùy chọn beforeClose. Từ số docs:

Sự kiện này được kích hoạt khi hộp thoại cố gắng đóng. Nếu trình xử lý sự kiện beforeClose (hàm gọi lại) trả về false, đóng sẽ được ngăn chặn.

Ví dụ mã

Cung cấp chức năng gọi lại để xử lý sự kiện beforeClose là tùy chọn init.

$(".selector").dialog({ 
    beforeClose: function(event, ui) { ... } 
}); 
+1

Tôi đã thấy điều này trước đây nhưng không nghĩ đến việc sử dụng nó cho những gì tôi cần. Nó thực sự đã giúp! Nếu có ai tò mò '$ (ele) .dialog (" close ")' trả về giá trị của beforeClose. Tôi đã có một chức năng mà đã làm rất nhiều công việc khác sau khi nó đã được đóng lại và tôi cần phải kiểm tra/trả lại trên hộp thoại ("gần") gọi quá. – Marie

3

Câu trả lời của Justin hoạt động tốt để thể hiện phương thức. Nếu bạn muốn hủy bỏ việc đóng cửa, chức năng của bạn nên trả về false, như thế:

$(".selector").dialog({ 
    beforeClose: function(event, ui) 
    { return check_if_unsaved_changes(..); } 
}); 

check_if_unsaved_changes nên trả về true nếu hộp thoại nên đóng và false nếu nó không nên gần gũi.

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