Kịch bản giống như: Tôi đang sử dụng Jquery để triển khai một số tính năng ajax. Ví dụ: khi người dùng nhấp vào nút "nhận dữ liệu", Jquery sẽ gọi hàm .ajax để tìm nạp một số dữ liệu từ máy chủ. Quá trình này có thể mất một chút thời gian, vì vậy tôi đã thêm các hàm .ajaxSend và .ajaxComplete để hiển thị một số hoạt ảnh cho quá trình chờ đợi (thực sự là một gif 'Tải dữ liệu' bên trong div với chỉ mục z: 999 để trở thành phần đầu của các div khác bên trong). Trong quá trình chờ ('Tải dữ liệu'), tôi muốn ngăn người dùng nhấp vào các nút khác (ví dụ: Tôi có các tab, nút khác bên dưới gif 'Tải dữ liệu' nhỏ). Cách tôi đạt được điều này là:cách ngăn chặn tương tác của người dùng khi chờ phản ứng của ajax
$("body").ajaxSend(function()
{
$(this).append('<div id="loading">Data Loading<\/div>');
$("div#error").remove();
$(this).children().not('#loading').css({'opacity':0.22});
});
$("body").ajaxComplete(function()
{
$("div#loading").remove();
$(this).children().not('#loading').css({'opacity':1});
});
Tuy nhiên, tôi không nghĩ rằng thay đổi độ mờ là cách tốt nhất. Trừ khi bạn làm cho độ mờ thành 0, người dùng vẫn có thể nhấp vào các nút/tab khác. Tôi không biết làm thế nào để tránh hoàn toàn bất kỳ tương tác người dùng nào trong quá trình này? Cảm ơn!!
thực sự, tôi cũng đang sử dụng JqueryUI. Có, tôi vừa thử tùy chọn phương thức của hộp thoại. Thật dễ dàng để đạt được hiệu ứng khối mà tôi muốn. Tuy nhiên, có cách nào đó để loại bỏ các cross-over (nút đóng) trên góc trên bên phải của hộp thoại? – WilliamLou
Xem http://stackoverflow.com/questions/896777/remove-close-button-on-jqueryui-dialog –
cảm ơn. Tôi đã chọn câu trả lời này kể từ khi tôi đã sử dụng JqueryUI để tôi không phải nhập một plugin khác cho hiệu ứng blockUI – WilliamLou