2013-03-06 32 views

Trả lời

11

Bạn thể làm nó theo cách này, mặc dù tôi hy vọng nó có thể là kinh khủng chậm trên các trang lớn:

$('*').off('keyup keydown keypress'); 

Đó sẽ chọn tất cả các yếu tố duy nhất trên trang web, sau đó loại bỏ bất kỳ keyup, keydown, và keypress sự kiện bị ràng buộc với họ.

Nếu bạn muốn ngăn chặn người dùng từ việc sử dụng xóa lùi chìa khóa để điều hướng đến các trang trước, bạn có thể thử đoạn mã sau:

var inputTags = ['INPUT', 'TEXTAREA']; 

$(document).on('keypress', function(e) { 
    if(e.which === 8 && $.inArray(e.target.tagName, inputTags) === -1) 
     e.preventDefault(); 
}); 

Điều đó sẽ hạn chế việc sử dụng các phím backspace, trừ trong trường hợp tiêu điểm là yếu tố đầu vào, nơi bạn có thể nhập văn bản (để <input type="text"> hoặc <textarea>).

Hãy xem điều này working demo.

+0

điều này sẽ ngăn trang chuyển hướng đến trang trước đó khi nhấn phím xóa lùi? –

+0

@MilindAnantwar Không, đó là chức năng trình duyệt tích hợp, không phải trình xử lý sự kiện được thêm vào trang bằng jQuery. Bạn có thể * thêm * một trình xử lý sự kiện để ngăn chặn điều đó nếu đó là mục tiêu dự định của bạn, tôi phải kiểm tra. –

+0

@MilindAnantwar Tôi đã chỉnh sửa câu trả lời của mình để bao gồm một số thông tin về cách bạn muốn ngăn chặn bằng cách sử dụng phím xóa lùi để điều hướng qua các mục lịch sử trước đó. –

3

Hãy thử

$(document).find('*').off('keyup keydown keypressed'); 

và bạn nên đưa điều này vào khối $(document).ready(), sau khi tất cả các JS tải trên trang (trước </body> thẻ, ví dụ).

+0

điều này sẽ ngăn trang chuyển hướng đến trang trước đó trên báo chí của backspace? –

+0

Tôi không chắc chắn nếu phím 'backspace' được theo sau bởi html' document' hoặc 'window' của trình duyệt. Nhưng tôi nghĩ nó nên được theo sau bởi 'cửa sổ' của trình duyệt. – alexbusu

2

bạn có thể sử dụng preventDefault() chức năng để giải quyết nó

+1

Không, bạn không thể. Điều đó ngăn chặn hành động mặc định SAU KHI các sự kiện đã chạy. Nếu bạn muốn ngăn các trình xử lý sự kiện tự chạy, bạn cần phải tách chúng hoặc có một sự kiện ưu tiên cao hơn (một tính năng JavaScript không hỗ trợ nhưng ActionScript 3 đã hỗ trợ trong một thập kỷ) và sau đó gọi stopImmediatePropagation, điều này sẽ ngăn chặn các trình xử lý khác được gắn vào nút từ chạy cũng như trình xử lý được gắn vào các nút cha. Nhưng không có cách nào để đặt ưu tiên sự kiện trong JavaScript, vì vậy về cơ bản vẫn không có cách nào để tắt các sự kiện bàn phím trong năm 2017 bằng JavaScript. – Triynko

1

$ ('*'). Unbind ('KeyUp KeyDown bấm phím')

-1

Mã này xóa phím cuối cùng đã nhấn trong TextBox2, bằng cách sử dụng substr .

`$("#TextBox2").val($("#TextBox2").val().substr(0, ($("#TextBox2").val().length-1)));` 
    //removes last letter pressed. 
+1

Mặc dù mã được đánh giá cao, nó luôn luôn nên có một lời giải thích kèm theo. Điều này không phải là dài, nhưng nó được mong đợi. – peterh

+0

Tôi không thấy điều này có liên quan như thế nào. Câu hỏi của OP. Đề xuất xóa. –

0

Đối với tôi làm việc kết hợp này:

Bật bấm phím kiện

$(document).keypress(function(){ 
 
// Code 
 
});

và cho tắt sự kiện này, tôi đã sử dụng:

$(document).off('keypress');

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