¿Hay alguna manera de coger combinación de teclas ctrl + x + retorno en jQuery (o Javascript), de manera que si el usuario pulsa esta combinación de teclas, una función se llama. Intenté usar el complemento de jquery hotkeys, pero eso no funcionó.cómo enlazar combinación de teclas Ctrl + X + Retorno en jQuery
Respuesta
Utilice una matriz booleana global var keys = []
para comprobar si se pulsa una tecla. A continuación, utilice la siguiente función para añadir una tecla de acceso directo mundial:
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;
};
Como se puede ver que añade una nueva escucha al evento 'keydown'
. Este oyente primero establecerá el valor correspondiente en keys
verdadero y luego ejecutará una prueba, si el keyValues
dado es actualmente verdadero. Tenga en cuenta que no puede eliminar keys[e.keyCode] = true
y ponerlo en otro oyente porque esto podría dar como resultado una orden de devolución de llamada incorrecta (primero la prueba de tecla de acceso rápido, y luego la asignación de teclas). El executeHotkeyTest
en sí es muy fácil también:
window.executeHotkeyTest = function(callback,keyValues){
var allKeysValid = true;
for(var i = 0; i < keyValues.length; ++i)
allKeysValid = allKeysValid && keys[keyValues[i]];
if(allKeysValid)
callback();
};
Por último hay que añadir otro oyente a keyup
para limpiar las teclas liberados de keys
.
window.addEventListener('keyup',function(e){
keys[e.keyCode] = false;
});
Ahora puede agregar una tecla de acceso directo a ctrl + x + introducir mediante el uso de addGlobalHotkey(callback,[13,17,88])
:
addGlobalHotkey(function(){
document.body.appendChild(
document.createElement('div').appendChild(
document.createTextNode('Ctrl + x + Enter down')
).parentNode);
},[88,13,17]);
En lugar de añadir un oyente para cada tecla de acceso directo se puede utilizar un mundial [[callback1,values1],[callback2,values2],...]
matriz.
Nota importante: en IE versión anterior 9 tiene que usar attachEvent
en lugar de addEventListener
. Como ya está utilizando jQuery, puede usar .on(...)
o .keydown
.
Usted puede utilizar la propiedad ctrlKey de la clave de objeto de prensa evento
$(document).keypress(function(e) {
if(e.ctrlKey) {
// do code to test other keys
}
});
también se desplazan, teclas alt reservada tienen propiedades, pero la tecla enter tiene keyCode 13.
¿Hay alguna razón que pueda para probar una combinación diferente, por ejemplo ctrl-alt-x? La tecla Intro generalmente se reserva para activar envíos de formularios y otros eventos en una página web.
$("body").bind("keydown",keyDown);
function keyDown(e){
if((e.ctrlKey)&&(e.keyCode == 88)&&(e.keyCode == 13)){
alert("Keys down are Ctrl + x + Return");
}
}
Puede encontrar que el uso de KeyboardJS es una mejor solución. Es fácil de usar.Aquí están docs;
KeyboardJS.on('ctrl + x + enter', function() {
//do stuff on press
}, function() {
//do stuff on release
});
Además, si desea forzar pulsando Ctrl antes de que X o introduzca usted puede hacer esto en vez
KeyboardJS.on('ctrl > x + enter', function() {
//do stuff on press
}, function() {
//do stuff on release
});
Probé con las teclas rápidas jquery y la ratonera y ninguna de las dos funcionó ... Parece que no se han actualizado desde hace tiempo. ¡Esto ha sido actualizado recientemente y funciona! – Chris
simplemente escribir así:
document.getElementById('yourelementid').onkeydown = function(){
if(event.ctrlKey===true && event.keyCode==88){
//your code goes here
}
}
//no depedency needs. pretty straight-forward
- 1. Creación de una combinación de teclas ctrl + tab en PuTTY
- 2. vb.net combinación de teclas
- 3. Desencadenar teclados (combinación de teclas) con jQuery
- 4. ¿Es posible simular una combinación de teclas Ctrl + F usando Jquery?
- 5. GWT manejo combinación de teclas
- 6. ¿Cómo conectar la combinación de teclas para cambiar de "C" a "Ctrl + C" en .NET?
- 7. ¿Cómo conseguir una combinación de teclas en C#
- 8. teclas Ctrl Vim-Izquierda/Derecha Ctrl-comportamiento
- 9. ¿Cómo puedo enlazar gestos de teclas en Caliburn.Micro?
- 10. Parece que no se puede deshacer de la combinación de teclas Ctrl-x Ctrl-z en Emacs para minimizar la ventana ('suspend-frame)
- 11. Cómo interceptar teclas especiales (alt/ctrl) presionar?
- 12. Manejar eventos de teclas Ctrl + Tab y Ctrl + Shift + Tab
- 13. Uso de pyhook para responder a la combinación de teclas (no solo teclas)
- 14. Prevenir el evento predeterminado para la combinación de teclas de jQuery en Firefox
- 15. Cómo registrar la combinación de teclas para tres teclas usando C#
- 16. Qt evento de combinación de teclas múltiples
- 17. ¿Cómo puedo cambiar la combinación de teclas utilizada para autocompletar en vim?
- 18. cómo implementar la combinación de teclas de acceso directo de CTRL o MAYÚS + <letter> a través de javascript?
- 19. accesskey VS combinación de teclas navegador
- 20. Enviar combinación de teclas a la ventana de fondo
- 21. ¿Cómo puedo enlazar ctrl + 1 para seleccionar la primera pestaña?
- 22. ¿Cómo puedo detectar uno o una combinación de golpes de teclas en C?
- 23. Desactivar teclas Ctrl-Alt-L global en KDE
- 24. Cómo enlazar eventos jquery en mi vista
- 25. Python para olfatear combinación de teclas estilo Autohotkey, ¿automatización?
- 26. jQuery ajax valor de retorno
- 27. Enlazar varios eventos en jQuery
- 28. jquery trigger ctrl + clic
- 29. Cómo enlazar eventos en jQuery jQuery PREDECLARED múltiples objetos
- 30. Jquery valor de retorno
I vea que tal vez haya un problema con el combo ctrl-return, especialmente con el navegador cruzado; lea más aquí: http: // stackoverflow. com/questions/3532313/jquery-ctrlenter-as-enter-in-text-area –