2013-08-30 97 views

Trả lời

29

Điều này sẽ thực hiện thủ thuật. Nó nói rằng khi phím cách được nhấn trên trang/tài liệu, nó không chỉ ngăn chặn hành vi mặc định của nó, mà còn trở lại trạng thái ban đầu.

trả về false dường như bao gồm ngăn chặnDefault. Source

Kiểm tra JQuery API để biết thêm thông tin về các sự kiện KeyDown - http://api.jquery.com/keydown/

window.onkeydown = function(e) { 
    return !(e.keyCode == 32); 
}; 

JQuery dụ

$(document).keydown(function(e) { 
    if (e.which == 32) { 
     return false; 
    } 
}); 

EDIT:

Như @ hổ phách-de-đen nói "mã trên sẽ chặn nhấn phím khoảng trắng trên đầu vào HTML ". Để khắc phục điều này, bạn e.target chính xác nơi bạn muốn chặn phím cách. Điều này có thể ngăn chặn phím cách chặn các yếu tố khác như đầu vào HTML.

Trong trường hợp này, chúng tôi chỉ định spacebar cùng với mục tiêu cơ thể. Điều này sẽ ngăn chặn đầu vào bị chặn.

window.onkeydown = function(e) { 
    if (e.keyCode == 32 && e.target == document.body) { 
    e.preventDefault(); 
    } 
}; 

LƯU Ý: Nếu bạn đang sử dụng JQuery sử dụng e.which thay vì e.keyCodeSource.

The event.which property normalizes event.keyCode and event.charCode

JQuery đóng vai trò như một normalizer cho một loạt các sự kiện. Nếu điều đó gây bất ngờ cho bất cứ ai đọc điều này. Tôi khuyên bạn nên đọc tài liệu Event Object của họ.

+1

Mã này có thể chặn nhấn phím cách trên đầu vào HTML. Bạn phải kiểm tra (e.target === document.body) ở đây đầy đủ câu trả lời chính xác: http://stackoverflow.com/a/22559917/3120495 – Ujeenator

0

Bạn đã thử chụp sự kiện keydown trong javascript chưa? Nếu bạn đang sử dụng jQuery bạn có thể đọc thêm về chụp các sự kiện quan trọng ở đây: http://api.jquery.com/keydown/

Nếu bạn không phải là bạn có thể nắm bắt và bỏ qua các phím nhấn thanh không gian như đã mô tả ở đây: https://stackoverflow.com/a/2343597/1019092

+0

@Alberto - hãy nhớ đọc một phần câu trả lời có nội dung * "đây là hành vi được mong đợi trong hầu hết các trình duyệt. Tôi sử dụng nó mọi lúc và tôi cực kỳ khó chịu khi nó không hoạt động trong một trang. "* –

6

Detect nếu spacebar là bị ép. Nếu có, hãy ngăn chặn hành vi mặc định của nó.

document.documentElement.addEventListener('keydown', function (e) { 
    if ((e.keycode || e.which) == 32) { 
     e.preventDefault(); 
    } 
}, false);