2013-06-13 31 views
6

Tôi chắc rằng điều này đã được yêu cầu ở đây nhiều lần. Số latest tôi thấy là vào ngày tháng 12 năm 2012. Nhưng tôi muốn hỏi liệu có ai đó có được giải pháp sửa lỗi /tốt hơn cho vấn đề này không.Làm cách nào để dừng tập lệnh khi sử dụng Hộp thoại jQuery?

Tôi đang sử dụng jQueryUI Dialog và tôi muốn hỏi xem có thể ngừng thực thi tập lệnh khi hộp thoại bật lên và người dùng chưa chọn câu trả lời. Giống như javascript confirm().

Dưới đây là những gì tôi có cho đến nay:

jQuery

$("#GlobalDialogBox").dialog({ 
     modal: true, 
     buttons: { 
     "Yes": function() { 
      callbackFunctionTrue(); 
      $(this).dialog('close'); 
     }, 
     "No": function() { 
      callbackFunctionFalse(); 
      $(this).dialog('close'); 
     } 
     } 
    }); 

    alert("This should fire after answering the dialog box."); //but this fires as soon as the dialog pops up.. :(

Các alert là một phần chung của kịch bản đám cháy sau khi trả lời các hộp thoại không phụ thuộc vào câu trả lời. Khi sửa chữa, tôi chỉ chèn alert vào callbackFunctionTrue()callbackFunctionFlase() và nó thực hiện công việc.

Nhưng nếu tôi không muốn làm điều đó thì sao? Làm cách nào để dừng tập lệnh khi hộp thoại bật lên để tôi có thể tự do thêm mã của mình bên dưới tập lệnh dialog? Có ai có một giải pháp tốt hơn? Bất kỳ trợ giúp sẽ được đánh giá cao! Cảm ơn trước! :]

+0

http://stackoverflow.com/a/6924588/1166285 –

Trả lời

3

Khi hộp thoại đang được đóng, nó sẽ kích hoạt sự kiện đóng. Bạn có thể làm điều đó bằng cách thêm sự kiện nghe để thoại của bạn:

$("#GlobalDialogBox").on("dialogclose", function(event, ui) { 
     alert("something"); 
}); 

hoặc theo cách phù hợp hơn:

$("#GlobalDialogBox").dialog({ 
    modal: true, 
    buttons: { 
     "Yes": function() { 
      callbackFunctionTrue(); 
      $(this).dialog('close'); 
     }, 
     "No": function() { 
      callbackFunctionFalse(); 
      $(this).dialog('close'); 
     } 
    }, 
    close: function(event, ui){ 
     alert("something"); 
    } 
}); 
-2

bạn có thể sử dụng trả lại để dừng chức năng.

+0

anh ấy muốn tạm dừng không dừng lại – chiliNUT

1

Bạn có thể không thực sự tạm dừng thực hiện kịch bản tùy tiện. Chức năng gọi lại là giải pháp tốt nhất của bạn trong trường hợp này, do đó, bên dưới các tùy chọn nút trên hộp thoại sẽ thêm trình xử lý sự kiện gần và đặt cảnh báo của bạn và bất kỳ mã nào khác bạn muốn thực thi sau khi hộp thoại đóng trong đó.

0

Không chắc chắn lý do bạn không muốn làm điều đó. Những gì bạn đã thực hiện cũng giống như tôi đã thực hiện khi ở trong tình huống tương tự và nó hoạt động tốt. Khởi chạy hộp thoại trong hàm JavaScript của chính nó và khởi chạy các hàm có/không của bạn dựa trên yếu tố nào được nhấp vào. Không cần hộp cảnh báo.

1
function dialog_confirm(){ 
    $("#dialog-confirm").dialog({ 
    //autoOpen: false, 
    resizable: false, 
    height:140, 
    modal: true, 
    buttons: { 
     "Delete all items": function() { 
     $(this).dialog("close"); 
     dialog_confirm_callback(true); 
     }, 
     Cancel: function() { 
     $(this).dialog("close"); 
     dialog_confirm_callback(false); 
     } 
    } 
    }); 
} 
function dialog_confirm_callback(value) { 
    if (value) { 
    alert("Confirmed"); 
    } else { 
    alert("Rejected"); 
    } 
} 
Các vấn đề liên quan