2010-01-29 37 views
5

Tôi đang sử dụng một số jquery để vô hiệu hóa nút gửi biểu mẫu sau khi được nhấp để tránh nhấp chuột lặp lại ngẫu nhiên. Điều này làm việc tốt trong tất cả các trình duyệt ngoại trừ Firefox. Trong Firefox nếu người dùng sử dụng nút Quay lại của trình duyệt để quay lại trang sau khi việc tắt nút gửi đã xảy ra, nút gửi vẫn bị tắt. Có giải pháp nào cho vấn đề này?Nút gửi biểu mẫu vẫn bị vô hiệu hóa khi sử dụng nút Quay lại trong Firefox

+1

Bạn có thể gửi mã của bạn? – ryanulit

+1

Thêm trình xử lý tải chưa có sản phẩm nào. Lý do được thảo luận trong câu hỏi liên quan này: [Sự kiện tải trên trình duyệt chéo và nút Quay lại] (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button/201406) – user240515

Trả lời

0

Nếu trình duyệt đã tắt bộ nhớ cache thì trang sẽ được tải lại như thể không có gì xảy ra (không có nút nào được nhấp).

Nếu bạn muốn phía máy khách, bạn có thể sử dụng cookie.

Bây giờ, nếu bạn có công nghệ phía máy chủ (PHP/Rails), thì bạn có thể đặt giá trị trong biến phiên.

4
$(document).ready(function() { 
    $('input[type=submit]', this).attr('disabled', false); 

    $('#myform').submit(function(){ 
     $('input[type=submit]', this).attr('disabled', true); 
    });  

}); 

Sử dụng jQuery, điều này sẽ làm cho nút không bị tắt khi sử dụng nút quay lại trên trình duyệt. Thử nghiệm trên FF 3.5.

+0

Thực ra điều này không chính xác - $ (tài liệu) .ready() sẽ không kích hoạt khi nhấn nút quay lại; cũng không có bất kỳ tập lệnh nội tuyến nào. Tốt nhất là sử dụng sự kiện window.onpageshow, mặc dù nếu bạn cần hỗ trợ IE10 hoặc thấp hơn thì bạn sẽ không may mắn. Thông tin thêm tại đây: https://stackoverflow.com/questions/2638292/after-travelling-back-in-firefox-history-javascript-wont-run/2639165#2639165 – Chris

+0

Phụ lục ngắn cho nhận xét của tôi ở trên: điều này áp dụng chỉ dành cho các trình duyệt hiện đại, sẽ lưu vào bộ nhớ cache toàn bộ trang (bao gồm mọi chỉnh sửa được thực hiện bởi tập lệnh). Vì vậy, câu trả lời của Erik ở trên có thể sẽ chính xác tại thời điểm nó được đăng - và nó vẫn sẽ hoạt động trong IE10 trở xuống - nhưng nếu bạn đang tìm câu trả lời này vào năm 2017 hoặc muộn hơn thì hãy cẩn thận. – Chris

8

Có lẽ, bạn nên thêm autocomplete = tham số "off" để hình của bạn

<form autocomplete="off"> 
    <input type="submit" /> 
</form> 
+0

Thật lạ lẫm với tôi rằng Firefox coi trạng thái của một phần nút "tự động hoàn thành" ... nhưng dù sao, cảm ơn vì giải pháp sạch sẽ. BTW, điều này xảy ra không chỉ khi quay trở lại với trình duyệt, nhưng khi trao đổi trong một phiên bản mới của biểu mẫu thông qua Ajax. – lawrence

+0

Tôi sẽ nói câu trả lời này phải được chấp nhận. –

+1

Không hiệu quả với tôi (Firefox 54) –

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