elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  Como evitar que el navegador ejecute sus funciones por defecto [Jquery]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como evitar que el navegador ejecute sus funciones por defecto [Jquery]  (Leído 2,211 veces)
:ohk<any>


Desconectado Desconectado

Mensajes: 1.744


Yo lo que quiero que me salga bien es la vida.


Ver Perfil WWW
Como evitar que el navegador ejecute sus funciones por defecto [Jquery]
« en: 26 Julio 2015, 16:58 pm »

Buenas gente,

Estoy intentando utilizar un hotkey con jquery que funciona sin problemas, pero cuando hay una diferencia de compatibilidad de hotkeys tengo un gran problema.
Por ejemplo, le doy un hotkey al (Shift+Ctrol+S) para que pase algo y no da problemas.

Pero cuando le hago por ejemplo al (Ctrl+S) el navegador dispara la opción de guardar pagina y al mismo tiempo ejecuta la funcion que adiciono.
Y quisiera saber como puedo evitar que el navegador ejecute automáticamente su función por defecto.

No esta por demás decirles que la funcion .preventDefault() ya la he utilizado sin resultados positivos.

Mi código:

Código
  1.  
  2.        $(document).keyup(function(e){
  3.        if(e.which == 17) isCtrl=false;
  4.        }).keydown(function (e){
  5.        if(e.which == 17) isCtrl=true;
  6.                // Ctrl + S
  7.        if(e.which == 83 && isCtrl)
  8.        {
  9.        e.preventDefault();
  10.        alert("Ha presionado el Ctrl + S");
  11.        }
  12.        });
  13.  

En el caso explicito de mi código, cuando presiono Ctrl+S, me sale la alerta como debe ser, pasada la alerta se abre la opción del navegador.

Alguna idea?

Saludos


En línea

Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Como evitar que el navegador ejecute sus funciones por defecto [Jquery]
« Respuesta #1 en: 26 Julio 2015, 17:07 pm »

Yo creo que tienes que usar stopPropagation(), porque preventDefault() es para el evento que estás escuchando (keyup).


En línea

:ohk<any>


Desconectado Desconectado

Mensajes: 1.744


Yo lo que quiero que me salga bien es la vida.


Ver Perfil WWW
Re: Como evitar que el navegador ejecute sus funciones por defecto [Jquery]
« Respuesta #2 en: 26 Julio 2015, 17:12 pm »

Gracias, lo acabo de probar y te digo que sigo con los mismos resultados, se dispara mi alert y luego la funcion del navegador.

Alguna otra idea? O tendre que limitarme a usar hotkeys que no esten ocupados por el navegador?

Saludos
En línea

Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Como evitar que el navegador ejecute sus funciones por defecto [Jquery]
« Respuesta #3 en: 26 Julio 2015, 18:00 pm »

Es raro, a mi me funciona. Excepto para algunas combinaciones (que son manejadas por tu SO y no el navegador). Aquí te dejo mi jsFiddle:

http://jsfiddle.net/8zqp6wjh/1/

Lo importante es:

Código
  1.    eventCombo.add(function () {
  2.        console.log('Ctrl + S called');
  3.    }, 17, 83);
  4.  
  5.    $(document).keydown(function (e) {
  6.        eventCombo.handleKey(e.keyCode);
  7.        e.preventDefault();
  8.        e.stopPropagation();
  9.    });
En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: Como evitar que el navegador ejecute sus funciones por defecto [Jquery]
« Respuesta #4 en: 27 Julio 2015, 18:55 pm »

Este es el script que uso para cancelar el ENTER en los inputs de formularios.

Código:
<script type="text/javascript">
        function stopRKey(evt) {
          var evt = (evt) ? evt : ((event) ? event : null);
          var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
          if ((evt.keyCode == 13) && ((node.type=="text") || (node.type=="email") || (node.type=="radio") || (node.type=="checkbox")) )  {return false;}
        }
        document.onkeypress = stopRKey;
</script>


Si estas en un text, email, radio, checkbox y el usuario presiona ENTER, no se va mandar el submit.

Luego lo capturo con jquery:
Código:
$(document).on("keypress", ".clase-input", function(e) {
     if (e.which == 13) {
         //evento al presionar enter estando dentro de .clase-input

     }
});
Saludos.
« Última modificación: 27 Julio 2015, 18:58 pm por _Enko » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines