Giải pháp: Đặt đoạn mã sau vào cuối tất cả các trang của bạn có chứa các hình thức:
<!-- Block the Backspace and Enter keys in forms, outside of input texts and textareas -->
<script type="text/javascript">
function blockBackspaceAndEnter(e) {
if (!e) { // IE reports window.event instead of the argument
e = window.event;
}
var keycode;
if (document.all) {
// IE
keycode = e.keyCode;
} else {
// Not IE
keycode = e.which;
}
// Enter is only allowed in textareas, and Backspace is only allowed in textarea and input text and password
if ((keycode == 8
&& e.srcElement.type != "text"
&& e.srcElement.type != "textarea"
&& e.srcElement.type != "password")
|| (keycode == 13 && e.srcElement.type != "textarea")) {
e.keyCode = 0;
if (document.all) {
// IE
event.returnValue = false;
} else {
// Non IE
Event.stop(e);
}
}
}
for (var i = 0; i < document.forms.length; i++) {
document.forms[i].onkeydown = blockBackspaceAndEnter;
}
</script>
tôi có các ý kiến sau đây về những gì người khác đã trả lời ở đây trước:
Ai đó đã nói:
"Xin đừng. Người dùng thích backspace-to-go-back; . Đi lại được một trong những trình duyệt quan trọng nhất các tính năng và phá vỡ nó là intolerably thô lỗ"
câu trả lời của tôi với anh ấy là:
Vâng, thường người DO sử dụng back-nút để quay trở lại , NHƯNG KHÔNG trên các trang có HÌNH THỨC. Mặt khác, nó thực sự dễ dàng cho người vô tình nhấp vào gần hoặc bên ngoài một văn bản đầu vào hoặc textarea, và sau đó nhấn vào nút quay lại, vì vậy họ sẽ mất tất cả chỉnh sửa của họ, như người khác cũng nhận thấy:
"Người dùng không ở trong hộp văn bản và nhấn vào không gian , hoàn toàn mất tất cả thông tin biểu mẫu mà họ vừa mới nhập. Thường không phải là vấn đề, nhưng đối với chúng tôi, chúng tôi đang điền vào rất nhiều văn bản về các biểu mẫu trạng thái dài. "
Cùng hành vi không mong muốn cũng có thể nói về phím Enter để gửi biểu mẫu, mà thường là chỉ mong muốn (nếu bao giờ) cho các hình thức nhỏ với một vài lĩnh vực, nhưng không phải cho các hình thức với nhiều các trường và các hộp chọn và hộp nhập liệu và văn bản, trong đó hầu hết thời gian bạn KHÔNG muốn biểu mẫu được gửi khi bạn nhấn Enter.
Vì vậy, đây là lý do tại sao tôi đề xuất mã ở trên, áp dụng cho tất cả các thẻ FORM > chức năng được đề xuất bởi webster, nhưng không kiểm tra ALT, điều tôi không nghĩ là hữu ích và không có kiểm tra cho CTRL + N và CTRL + R và CTRL + F5, mà chúng ta không muốn chặn, bởi vì khi chúng được sử dụng chúng KHÔNG phải ngẫu nhiên.
Thật không may, mã ở trên không hoạt động trong Firefox khi bạn có DIV và BẢNG bên trong MẪU! Đó là vì sự kiện keydown dường như không được nhân giống với biểu mẫu có chứa, và thay vào đó hành vi mặc định (UNDESIRED!) Được áp dụng cho các phím Backspace và Enter. Tôi chưa thể tìm thấy giải pháp cho điều này ...
Xin đừng. Người dùng thích backspace-to-go-back; trở lại là một trong những tính năng trình duyệt quan trọng nhất và phá vỡ nó là không thể chấp nhận được. Nếu họ phạm sai lầm, họ luôn có thể tiến lên phía trước.(Trừ khi ứng dụng web của bạn bị hỏng khi bạn quay trở lại, trong trường hợp đó bạn có vấn đề lớn hơn phải lo lắng.) – bobince
Lý do ngăn người dùng quay lại trang trước là gì? Ngay cả khi bạn đã chặn backspace từ việc quay trở lại người dùng vẫn có thể sử dụng nút quay lại trình duyệt hoặc Alt + ←. –
Tôi _hate_ backspace-to-go-back. Alt-Left (hoặc Cmd-Left cho những người bạn với bàn phím goofy) hoạt động để làm điều tương tự và không vô tình nhận được gõ trên các hình thức (do đó ngăn ngừa mất tất cả các công việc nhập biểu mẫu trước khi bấm phím erroneus). – sblom