2013-04-23 25 views
5

Xin lỗi nếu điều này là đơn giản; Tôi mới sử dụng JQuery. Tôi đã tìm kiếm và tìm thấy các câu hỏi như this, nhưng chúng dường như không trả lời câu hỏi của tôi.Thực hiện thao tác trên nút dừng trình duyệt, nhấp vào

Tôi đang sử dụng JQuery để hiển thị một chỉ báo tiến độ câm cho những hành động mà phải mất một thời gian dài:

$(document).ready(function() { 
    $('form').submit(function() { 
     $('#progress').show(); 
    }); 
}); 

Khi người dùng nhấp vào một nút hình thức, tôi chỉ hiển thị một div với một gif động. Div này hiển thị trong phần còn lại của trang hiển thị. Sau khi hành động của biểu mẫu hoàn tất, một trang mới sẽ tải.

Tính năng này hoạt động tốt, nhưng điều gì sẽ xảy ra nếu người dùng nhấp "ngừng" trong trình duyệt trước khi tác vụ hoàn tất? Làm thế nào tôi có thể làm cho div biến mất? Có cách nào để bắt sự kiện này hay không, có cách nào tốt hơn để xử lý toàn bộ tình huống không?

Cảm ơn sự giúp đỡ của bạn.

+0

Nó không chắc bạn có thể chụp sự kiện đó. Nhưng cách tốt hơn là gửi dữ liệu biểu mẫu của bạn bằng AJAX. Có lẽ [kiểm tra điều này] (http://stackoverflow.com/questions/1960240/jquery-ajax-submit-form) – musefan

+0

Có sự kiện "dừng", không phải là trình duyệt chéo và không đáng tin cậy lắm. – Xotic750

+0

Bạn có thể chọn div và xóa nó không? Một cái gì đó như: '$ ('# progress'). Remove()' sẽ lấy nó ra khỏi DOM. Nó sẽ không dừng lại bất cứ hành động nào đang xảy ra. Làm như vậy sẽ yêu cầu các hành động khác dựa trên cách bạn đang chạy hành động. – ckersch

Trả lời

0

Bạn có thể sử dụng sự kiện "dừng" để xử lý sự kiện này, nhưng sự kiện này sẽ chỉ hoạt động đối với IE. Tôi nghĩ bạn không thể xử lý sự kiện đó cho các trình duyệt khác.

gì bạn có thể thử là làm cho hộp thoại tiến trình biến mất sau thời gian chờ nhỏ:

$('form').submit(function() { 
    $('#progress').show(); 
    setTimeout(function(){ 
      $('#progress').hide(); 
    },3000); 
}); 
+0

Vâng, tôi đã kết luận rằng điều đó là không thể. Tuy nhiên, làm cho nó biến mất sau một thời gian chờ thực sự không giúp đỡ. Nó làm cho nó thậm chí còn khó hiểu hơn: hộp thoại sẽ biến mất trước khi công việc được thực hiện (làm cho người dùng nghĩ rằng nó không thành công); hoặc sẽ mất một lúc để biến mất khi họ nhấp vào dừng (khiến người dùng nghĩ rằng nó vẫn đang diễn ra); hoặc cả hai. –

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