Làm cách nào tôi có thể hủy keydown
của một khóa cụ thể trên bàn phím, ví dụ (khoảng trắng, nhập và arrows
) trong trang HTML.Hủy bỏ phím tắt trong HTML
Trả lời
Nếu bạn chỉ quan tâm đến các khóa ví dụ mà bạn đã đề cập, sự kiện keydown
sẽ làm, ngoại trừ các phiên bản Opera cũ hơn, trước Blink (tối đa và bao gồm phiên bản 12, ít nhất) bạn sẽ cần hủy sự kiện keypress
. Việc xác định đáng tin cậy các khóa không thể in được dễ dàng hơn trong sự kiện keydown
hơn sự kiện keypress
, vì vậy sau đây sử dụng biến để đặt trong trình xử lý keydown
để thông báo cho trình xử lý keypress
có hay không chặn hoạt động mặc định.
var cancelKeypress = false;
document.onkeydown = function(evt) {
evt = evt || window.event;
cancelKeypress = /^(13|32|37|38|39|40)$/.test("" + evt.keyCode);
if (cancelKeypress) {
return false;
}
};
/* For Opera */
document.onkeypress = function(evt) {
if (cancelKeypress) {
return false;
}
};
Bắt sự kiện keydown và trả về false. Nó phải ở trong dòng:
<script>
document.onkeydown = function(e){
var n = (window.Event) ? e.which : e.keyCode;
if(n==38 || n==40) return false;
}
</script>
Các mã phím được định nghĩa here
chỉnh sửa: cập nhật câu trả lời của tôi để làm việc trong IE
'window.captureEvents' đã lỗi thời và đã bị xóa khỏi các phiên bản Firefox mới hơn và không bao giờ được hỗ trợ bởi một số trình duyệt khác. Xem https://developer.mozilla.org/en/DOM/window.captureEvents. –
Điều này sẽ không hoạt động trong IE, trong đó 'e' sẽ không được xác định. –
@andy, @tim: đúng, tôi đã sao chép và dán một cách mù quáng. Tôi đã sửa lại câu trả lời của mình. Tất nhiên bây giờ @ tim của câu trả lời là nhanh nhất và chính xác hơn – marcgg
jQuery có một tốt đẹp KeyPress function mà cho phép bạn phát hiện một phím bấm, sau đó nó chỉ là một trường hợp phát hiện keyvalue và thực hiện một nếu cho những người bạn muốn bỏ qua.
chỉnh sửa: ví dụ:
$('#target').keypress(function(event) {
if (event.keyCode == '13') {
return false; // or event.preventDefault();
}
});
Chỉ cần trả về false. Cẩn thận rằng trên Opera này không hoạt động. Bạn có thể muốn sử dụng onkeyup thay thế và kiểm tra ký tự được nhập cuối cùng và xử lý nó. Hoặc sử dụng tốt hơn JQuery KeyPress
Đây chắc chắn là chủ đề rất cũ. Để làm được điều kỳ diệu với IE10 và FireFox 29.0.1 bạn chắc chắn phải làm bên này keypress
(không keydown
) chức năng nghe sự kiện:
if (e.preventDefault) e.preventDefault();
tôi chỉ phát triển cho IE vì tác phẩm của tôi đòi hỏi nó, do đó là mã của tôi cho trường số, không phải là một vẻ đẹp nhưng hoạt động tốt
$(document).ready(function() {
$("input[class='numeric-field']").keydown(function (e) {
if (e.shiftKey == 1) {
return false
}
var code = e.which;
var key;
key = String.fromCharCode(code);
//Keyboard numbers
if (code >= 48 && code <= 57) {
return key;
} //Keypad numbers
else if (code >= 96 && code <= 105) {
return key
} //Negative sign
else if (code == 189 || code == 109) {
var inputID = this.id;
var position = document.getElementById(inputID).selectionStart
if (position == 0) {
return key
}
else {
e.preventDefault()
}
}// Decimal point
else if (code == 110 || code == 190) {
var inputID = this.id;
var position = document.getElementById(inputID).selectionStart
if (position == 0) {
e.preventDefault()
}
else {
return key;
}
}// 37 (Left Arrow), 39 (Right Arrow), 8 (Backspace) , 46 (Delete), 36 (Home), 35 (End)
else if (code == 37 || code == 39 || code == 8 || code == 46 || code == 35 || code == 36) {
return key
}
else {
e.preventDefault()
}
});
});
Upps, lãng phí này không phải là lĩnh vực số blog, xin lỗi –
- 1. Hủy bỏ một phím tắt trong jQuery
- 2. URL Rewrite - Hủy bỏ .html mở rộng
- 3. Có thể hủy bỏ tắt máy trên Linux không?
- 4. Nút hủy bỏ JDialog
- 5. Phím tắt trong iOS?
- 6. Phím tắt trong WPF
- 7. Vấn đề với Regular Expression để Hủy bỏ Tag HTML
- 8. Phím tắt cho Notepad ++ để Mã hóa HTML dễ dàng
- 9. Tắt bàn phím <enter> phím
- 10. Bàn phím tắt Android
- 11. Thứ tự thay đổi/phím tắt/nhấn phím trong jQuery
- 12. Phím tắt ngắt phím AutoHotKey
- 13. Phím tắt trong WPF MVVM?
- 14. Phím tắt ngoài trong bảng
- 15. Phím tắt trình tự phím tắt cho menu
- 16. Phím tắt trong Ứng dụng web
- 17. Làm thế nào để hủy bỏ tắt máy trong Windows (XP | Vista) theo chương trình?
- 18. Hủy bỏ coroutines
- 19. Backgroundworker hủy bỏ
- 20. Hủy bỏ xmlhttprequest
- 21. Tắt hủy tiếng ồn HTC
- 22. Hủy bỏ tiếng vọng
- 23. Phím tắt Visual Studio
- 24. Tắt phím tắt Linux Mint Alt-F1
- 25. Phím tắt tùy chỉnh
- 26. Phím tắt hoàn thành mã tóm tắt
- 27. Phím tắt Pythonic cho các phím trong từ điển?
- 28. Hủy bỏ việc hủy bỏ hộp thoại in trong in màu bạc
- 29. Tắt các phím tắt IE trong các điều khiển WebBrowser
- 30. Cách tắt các phím tắt trong Hộp văn bản WPF
+1, tôi đã xóa câu trả lời của tôi để ủng hộ vấn đề này, tôi đã không biết về các vấn đề của Opera :-) –
Opera quirk vẫn tồn tại những ngày và giờ? Bạn vẫn cần phải hủy trong nhấn phím? –
@RobertKoritnik: Tôi vừa thử nó và nó không áp dụng cho phiên bản Opera mới nhất. Tôi đoán nó không áp dụng cho bất kỳ phiên bản Opera nào dựa trên Blink. –