javascript - getcontrol - ocultar campos processmaker
Ctrl+S preventDefault en Chrome (4)
document.onkeydown = function (e) {
e = e || window.event;//Get event
if (e.ctrlKey) {
var c = e.which || e.keyCode;//Get key code
switch (c) {
case 83://Block Ctrl+S
e.preventDefault();
e.stopPropagation();
break;
}
}
};
Quiero capturar Ctrl + S en Chrome y evitar el comportamiento predeterminado del navegador para guardar la página. ¿Cómo?
(Simplemente publicando la pregunta y la respuesta como lo hice después de esto durante bastante tiempo y no encontré una solución)
document.onkeydown = function (e) {
e = e || window.event;//Get event
if (e.ctrlKey) {
var c = e.which || e.keyCode;//Get key code
switch (c) {
case 83://Block Ctrl+S
case 87://Block Ctrl+W --Not work in Chrome
e.preventDefault();
e.stopPropagation();
break;
}
}
};
"Prestado" de Overridering + s (guardar funcionalidad) en el navegador
document.addEventListener("keydown", function(e) {
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
e.preventDefault();
alert(''captured'');
}
}, false);
Por lo que puedo ver, la salsa secreta es que Ctrl + S NO activa el evento de pulsación de tecla, solo el evento de pulsación.
Usando jQuery.hotkeys :
$(document).bind(''keydown'', ''ctrl+s'', function(e) {
e.preventDefault();
alert(''Ctrl+S'');
return false;
});
Solo con jQuery:
$(document).bind(''keydown'', function(e) {
if(e.ctrlKey && (e.which == 83)) {
e.preventDefault();
alert(''Ctrl+S'');
return false;
}
});
Editar 2012.12.17 - jQuery.hotkeys dice
Las teclas rápidas no se rastrean si se está dentro de un elemento de entrada (a menos que se vincule explícitamente la tecla directa directamente a la entrada). Esto ayuda a evitar el conflicto con el tipeo normal del usuario.