Có cách nào để bắt tổ hợp phím ctrl + x + trở trong jquery (hoặc javascript), như vậy nếu người dùng nhấn tổ hợp phím này, một hàm được gọi. Tôi đã thử sử dụng plugin jquery hotkeys, nhưng điều đó không hiệu quả.cách để ràng buộc tổ hợp phím ctrl + x + trở lại trong jquery
Trả lời
Sử dụng mảng boolean toàn cầu var keys = []
để kiểm tra xem một phím có được nhấn hay không. Sau đó, sử dụng chức năng sau để thêm một phím nóng toàn cầu:
window.addGlobalHotkey = function(callback,keyValues){
if(typeof keyValues === "number")
keyValues = [keyValues];
var fnc = function(cb,val){
return function(e){
keys[e.keyCode] = true;
executeHotkeyTest(cb,val);
};
}(callback,keyValues);
window.addEventListener('keydown',fnc);
return fnc;
};
Như bạn có thể thấy nó thêm người nghe mới vào sự kiện 'keydown'
. Người nghe này đầu tiên sẽ đặt giá trị tương ứng trong keys
true và sau đó thực hiện kiểm tra, cho dù keyValues
nhất định có đúng không. Lưu ý rằng bạn không thể xóa keys[e.keyCode] = true
và đặt nó vào một trình nghe khác vì điều này có thể dẫn đến lệnh gọi lại sai (kiểm tra phím nóng đầu tiên, sau đó ánh xạ khóa). Các executeHotkeyTest
chính nó là rất dễ dàng quá:
window.executeHotkeyTest = function(callback,keyValues){
var allKeysValid = true;
for(var i = 0; i < keyValues.length; ++i)
allKeysValid = allKeysValid && keys[keyValues[i]];
if(allKeysValid)
callback();
};
Cuối cùng bạn phải thêm người nghe khác để keyup
để làm sạch các phím phát hành từ keys
.
window.addEventListener('keyup',function(e){
keys[e.keyCode] = false;
});
Bây giờ bạn có thể thêm một phím nóng để ctrl + x + nhập bằng cách sử dụng addGlobalHotkey(callback,[13,17,88])
:
addGlobalHotkey(function(){
document.body.appendChild(
document.createElement('div').appendChild(
document.createTextNode('Ctrl + x + Enter down')
).parentNode);
},[88,13,17]);
Thay vì thêm một người biết lắng nghe cho mỗi phím nóng, bạn có thể sử dụng một toàn cầu [[callback1,values1],[callback2,values2],...]
mảng.
Lưu ý quan trọng: trong IE phiên bản trước 9 bạn phải sử dụng attachEvent
thay vì addEventListener
. Vì bạn đã sử dụng jQuery, bạn có thể sử dụng .on(...)
hoặc .keydown
để thay thế.
Bạn có thể sử dụng ctrlKey tài sản của đối tượng sự kiện nhấn phím
$(document).keypress(function(e) {
if(e.ctrlKey) {
// do code to test other keys
}
});
thường xuyên thay đổi, alt reserved phím có các thuộc tính, nhưng nhập key có keyCode 13.
Có bất kỳ lý do bạn có thể không thử kết hợp khác - ví dụ ctrl-alt-x? Phím Enter thường được dành riêng để kích hoạt các lần gửi biểu mẫu và các sự kiện khác trên trang web.
$("body").bind("keydown",keyDown);
function keyDown(e){
if((e.ctrlKey)&&(e.keyCode == 88)&&(e.keyCode == 13)){
alert("Keys down are Ctrl + x + Return");
}
}
Bạn có thể thấy sử dụng KeyboardJS để trở thành giải pháp tốt hơn. Đập của nó đơn giản để sử dụng.Dưới đây là docs;
KeyboardJS.on('ctrl + x + enter', function() {
//do stuff on press
}, function() {
//do stuff on release
});
Ngoài ra, nếu bạn muốn để buộc nhấn ctrl trước x hoặc nhập bạn có thể làm điều này thay vì
KeyboardJS.on('ctrl > x + enter', function() {
//do stuff on press
}, function() {
//do stuff on release
});
Tôi đã thử các phím nóng và mousetrap và không hoạt động ... có vẻ như chưa được cập nhật trong một thời gian. Điều này đã được cập nhật gần đây và hoạt động! – Chris
đơn giản chỉ cần gõ như thế này:
document.getElementById('yourelementid').onkeydown = function(){
if(event.ctrlKey===true && event.keyCode==88){
//your code goes here
}
}
//no depedency needs. pretty straight-forward
- 1. chụp ctrl + z tổ hợp phím trong javascript
- 2. Xử lý tổ hợp phím CTRL + C trên Win32
- 3. Có thể mô phỏng tổ hợp phím Ctrl + F bằng Jquery không?
- 4. tmux Scroll Lên/Xuống Trang sử dụng tổ hợp phím Ctrl-b và Ctrl-f
- 5. cách triển khai tổ hợp phím tắt CTRL hoặc SHIFT + <letter> qua javascript?
- 6. TTY chuyển cho tổ hợp phím Ctrl-Alt F1 và Alt-F1 ... F6 trong Mac OS X
- 7. Ràng buộc khóa VMWare ctrl-z, cách xóa
- 8. Không thể có sự đảo ngược của tổ hợp phím Ctrl-O trong Vim
- 9. Phát hiện các tổ hợp phím
- 10. phím tổ hợp ngủ đông
- 11. Sử dụng pyhook để trả lời cho tổ hợp phím (không chỉ một lần nhấn phím)?
- 12. Làm thế nào để tăng trong vim dưới cửa sổ (nơi tổ hợp phím CTRL-A không hoạt động ...)
- 13. Emacs trong các ràng buộc bàn phím TTY +
- 14. Làm cách nào để bật lại phím Caps Lock để Điều khiển trong OS X 10.8?
- 15. Phím tắt để điều hướng trở lại trong studio hình ảnh 2010 và chia sẻ lại
- 16. Ràng buộc để khóa phương tiện iTunes khối OS X
- 17. Ràng buộc nhiều sự kiện trong jQuery
- 18. Làm cách nào để ngăn Visual Studio chờ phần thứ hai của tổ hợp phím tắt?
- 19. Để ràng buộc rõ ràng với^l trong Bash
- 20. ReSharper tổ hợp phím vấn đề
- 21. Phím tắt kích hoạt jQuery Ctrl + Shift + z & Ctrl + z trong wysiwyg textarea
- 22. Emacs: Phím in bắt buộc đối với một lệnh hoặc liệt kê tất cả tổ hợp phím
- 23. Làm thế nào để có được một tổ hợp phím trong C#
- 24. Cách chụp Ctrl + Tab và Ctrl + Shift + Tab trong WPF?
- 25. Thêm mục nhập trống vào hộp tổ hợp được ràng buộc vào danh sách thực thể
- 26. Áp dụng lại ràng buộc trong knockout
- 27. Ràng buộc số lượng lớn dữ liệu vào hộp tổ hợp?
- 28. SVN tổ hợp phím không làm việc trong Eclipse
- 29. Kết hợp phím bấm xử lý jQuery
- 30. jquery trigger ctrl + click
tôi thấy rằng có thể có một vấn đề với combo ctrl-return, đặc biệt là cross browser - đọc thêm ở đây: http: // stackoverflow. com/questions/3532313/jquery-ctrlenter-as-enter-in-text-area –