Print Page | Close Window

Comó deshabilitar teclas por javascript

Printed From: Vida Una
Category: Programación
Forum Name: Códigos JavaScript
Forum Description: Los mejores códigos en Java y Javascript de ayuda para los webmaster. Los mejores ejemplos y trucos útiles de la aplicación de JavaScript .
URL: https://www.vidauna.com/forum_posts.asp?TID=789
Printed Date: 14 Noviembre 2024 at 3:40pm


Topic: Comó deshabilitar teclas por javascript
Posted By: Programador
Subject: Comó deshabilitar teclas por javascript
Date Posted: 28 Febrero 2010 at 12:51am
Existen ocasiones que durante el desarrollo de un página web (especialmente cuando se usa java o por razones de seguridad) es necesario impedir que el usuario presione algunas teclas. El script que les dejo a continuación sirve para esto.

Notar 1: Este script es útil solo si abrieron la página en modo modal sin la barra del explorador ^_^

Notar 2: Si bien el objetivo del script es el del impedir que un usuario presiones ciertas combinaciones de teclas, el código utilizado puede usarse para capturar las teclas que presiona el usuario para diferentes motivos.


<script>
//Autor: rbedat,
//Este script permite deshabilitar:
// El boton derecho del mouse,
// El F5 y F11
// El Ctrl + F5
// El Ctrl + N y Ctrl + U
// El Ctrl + R
// El Ctrl + [<-] y el Ctrl + [->]
// El Backspace fuera de los formularios.
//
//Tener en cuenta que utiliza los eventos:
// onkeydown y onkeyup

//begin desabilitar teclas

var controlprecionado = 0;
var altprecionado = 0;
function desactivarCrlAlt(teclaactual){
//alert(teclaactual);
var desactivar = false;
//Ctrl +
if (controlprecionado==17){
if (teclaactual==78 || teclaactual==85 ){
//alert("Ctrl+N y Ctrl+U deshabilitado");
desactivar=true;
}
if (teclaactual==82){
//alert("Ctrl+R deshabilitado");
desactivar=true;
}
if (teclaactual==116){
//alert("Ctrl+F5 deshabilitado");
desactivar=true;
}
if (teclaactual==114){
//alert("Ctrl+F3 deshabilitado");
desactivar=true;
}
}
//Alt +
if (altprecionado==18){
if (teclaactual==37){
//alert("Alt+ [<-] deshabilitado");
desactivar=true;
}
if (teclaactual==39){
//alert("Alt+ [->] deshabilitado");
desactivar=true;
}
}
if (teclaactual==17)controlprecionado=teclaactual;
if (teclaactual==18)altprecionado=teclaactual;
return desactivar;
}

document.onkeyup = function(){
if (window.event && window.event.keyCode==17){
controlprecionado = 0;
}
if (window.event && window.event.keyCode==18){
altprecionado = 0;
}
}

document.onkeydown = function(){
//116->f5
//122->f11
//117->f6
//114->f3
//alert(window.event.keyCode);
if (window.event &&
desactivarCrlAlt(window.event.keyCode)){
return false;
}
if (window.event &&
(window.event.keyCode == 122 ||
window.event.keyCode == 116 ||
window.event.keyCode == 114 ||
window.event.keyCode == 117)){
//alert("lo siento!, no hay f5, f3, f6 ni f11 :P");
window.event.keyCode = 505;
}
if (window.event.keyCode == 505){
return false;
}
if (window.event && (window.event.keyCode == 8)){
valor = document.activeElement.value;
if (valor==undefined) {
//Evita Back en página.
//alert("lo siento!, no hay back :P");
return false;
}
else{
if (document.activeElement.getAttribute('type')
=='select-one')
{ return false; } //Evita Back en select.
if (document.activeElement.getAttribute('type')
=='button')
{ return false; } //Evita Back en button.
if (document.activeElement.getAttribute('type')
=='radio')
{ return false; } //Evita Back en radio.
if (document.activeElement.getAttribute('type')
=='checkbox')
{ return false; } //Evita Back en checkbox.
if (document.activeElement.getAttribute('type')
=='file')
{ return false; } //Evita Back en file.
if (document.activeElement.getAttribute('type')
=='reset')
{ return false; } //Evita Back en reset.
if (document.activeElement.getAttribute('type')
=='submit')
{ return false; } //Evita Back en submit.
else //Text, textarea o password
{
if (document.activeElement.value.length==0){
//No realiza el backspace(largo igual a 0).
return false;
}
else{
//Realiza el backspace.
document.activeElement.value.keyCode = 8; }
}
}
}
}
//end desabilitar teclas
</script>



Print Page | Close Window