Tiếp theo từ ap revious question nơi tôi được hỏi về việc vô hiệu hóa một nút gửi đến khi tất cả các cuộc gọi ajax đã hoàn thành việc quay trở lại ...Làm cách nào để ngăn chặn việc gửi biểu mẫu cho đến khi nhiều cuộc gọi ajax kết thúc? jquery
Dường như mọi người vẫn đang quản lý để gửi biểu mẫu ngay cả với các nút bị vô hiệu và một dấu hiệu cảnh báo . Tôi đoán nó có thể là từ nhấn 'enter' trong một đầu vào văn bản.
Tôi làm cách nào để vô hiệu hóa toàn bộ biểu mẫu chứ không phải chỉ là nút gửi?
Mã này cho đến nay là:
// if we're waiting for any ajax to complete we need to disable the submit
$(document).ajaxStart(function() {
$(".ajaxbutton").attr("disabled", "disabled");
// if it's taken longer than 250ms display waiting message
timer = setTimeout(function() {
$('#processingAlert').html(' ...please wait one moment');
$('#processingAlert').show();
}, 250);
})
$(document).ajaxComplete(function() {
$(".ajaxbutton").removeAttr("disabled");
$('#processingAlert').hide();
// cancel showing the message when the ajax call completes.
clearTimeout(timer);
});
Một điều khác mà tôi nên đề cập đến mà có thể gây ra một vấn đề là có rất nhiều ajax gọi xảy ra cùng một lúc, EG một div nhận đầu vào ẩn và div khác ở đâu đó trên trang hiển thị tổng giá.
Thực tế là một số cuộc gọi ajax đang hoàn thành nhanh chóng phủ nhận hiệu ứng vô hiệu hóa của ajaxStart? EG ajax call1 và ajax call2 đều kích hoạt ajaxStart - call1 kết thúc thực sự nhanh chóng, nó sẽ kích hoạt lại biểu mẫu trong khi chúng ta đang đợi call2 hoàn thành?
Có cách nào tốt hơn để làm điều này, nơi chúng tôi có thể chỉ đơn giản là kiểm tra nếu tất cả các cuộc gọi ajax đã hoàn thành?
Điều này nghe theo dòng bên phải, từ hướng dẫn: $ ("biểu mẫu"). Submit (function() { if ($ ("input: first"). Val() == "correct") Văn bản { $ ("span"). ("Đã xác thực ..."). Hiển thị(); trả về true; } $ ("span"). Văn bản ("Không hợp lệ!"). Hiển thị(). fadeOut (1000); trả về false; }); Vì vậy, nếu tôi kiểm tra xem tất cả các cuộc gọi ajax đã hoàn thành, tôi có thể trả về true. Tôi đang sử dụng PHP nên không thể sử dụng các chức năng ASP. – Ashley
PS Bất cứ ai cũng có thể cho tôi biết làm thế nào để chèn mã định dạng vào một bình luận, tôi luôn luôn có vẻ để có được tất cả mọi thứ squished vào một dòng – Ashley
Tôi không nghĩ rằng bạn có thể định dạng mã trong ý kiến. Tôi sẽ tiếp tục và mở rộng câu hỏi của bạn với các nhận xét bổ sung. –