Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Cancelacion de eventos

Estas en el tema de Cancelacion de eventos en el foro de Frameworks JS en Foros del Web. Hola, tengo un buscador hecho en ajax y php, y este manda la informacion al archivo de php automaticamente cuando este cambie o el usuario ...
  #1 (permalink)  
Antiguo 02/11/2012, 14:20
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Cancelacion de eventos

Hola, tengo un buscador hecho en ajax y php, y este manda la informacion al archivo de php automaticamente cuando este cambie o el usuario suelte una tecla

Código Javascript:
Ver original
  1. ('#search').on('change keyup',function(event){
  2.         //cod
  3. })

El buscador funciona perfectamente, pero el problema es que el me reconoce los tabs, el ctrl y todas las teclas que no usamos para escribir pero si para otro tipo de acciones, y esto hace que el script funcione de mas y haga mas peticiones de las que deberia

¿Hay alguna manera simple de excluir todas las teclas que no son necesarias a la hora de buscar sin tener que escribir un condicionamiento de capturar el cada codigo de la tecla (lo cual seria algo tedioso) y de esta manera lograr mi objetivo?

PD: puede parecer que suene a pereza, pero ando algo corto de tiempo y eso hace que te toquen estos predicamentos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #2 (permalink)  
Antiguo 02/11/2012, 15:52
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Cancelacion de eventos

Proba asi:

Código Javascript:
Ver original
  1. $("#search").bind("keyup",function()) {
  2.         if ((event.which) >= 65 && (event.which <= 90)) {
  3.             // LETRAS DE LA A - Z
  4.             // CODIGO BUSQUEDA
  5.         }
  6.     }

De este modo filtras que el caracter ascii sea el de una letra deberias buscarte los caracteres de los numeros para incluir dicho rango pero esta forma es una de las mas faciles creo para hacer esto.

Salu2
  #3 (permalink)  
Antiguo 02/11/2012, 15:58
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Exclamación Solucion: Cancelacion de eventos

Bueno me respondo a mi mismo
Código Javascript:
Ver original
  1. $('#search').on('change keyup',function(event){
  2.       arr = [ 9, 13, 16, 17, 18, 19, 20, 27, 33, 32, 34, 35, 36, 37, 38, 39, 40, 44, 45, 46];
  3.       if(jQuery.inArray(event.keyCode, arr) == -1 ){
  4.            //cod
  5.      }

1. Genero un arreglo con los codigos del teclado que quiero excluir
2. Uso una funcion de jQuery (en javascript - segun la documentacion de jQuery - el metodo mas parecido es indexOf) jQuery.inArray( value, array) que busca el valor del codigo del teclado ejecutado en el arreglo antes dado
3. Comparo lo que me retorna el metodo con -1, que es lo que retorna este metodo en caso de no encontrar coincidencias.

Espero que a alguien le sirva esto

Saludos!
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #4 (permalink)  
Antiguo 02/11/2012, 15:59
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Cancelacion de eventos

Lee mi msj arriba es mas facil con un rango jajaja :P
  #5 (permalink)  
Antiguo 02/11/2012, 16:01
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Cancelacion de eventos

Cita:
Iniciado por djaevi Ver Mensaje
Proba asi:

Código Javascript:
Ver original
  1. $("#search").bind("keyup",function()) {
  2.         if ((event.which) >= 65 && (event.which <= 90)) {
  3.             // LETRAS DE LA A - Z
  4.             // CODIGO BUSQUEDA
  5.         }
  6.     }

De este modo filtras que el caracter ascii sea el de una letra deberias buscarte los caracteres de los numeros para incluir dicho rango pero esta forma es una de las mas faciles creo para hacer esto.

Salu2
Hola djaevi gracias por tu respuesta, foros del web me trolleo porque no me mostraba tu comentario

Pero gracias por tu interes

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #6 (permalink)  
Antiguo 02/11/2012, 16:04
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Cancelacion de eventos

Jeje no hay problema..

Te lo dejo extendido para poder poner numeros tambien

Código Javascript:
Ver original
  1. $("#search").bind("keyup",function()) {
  2.             if (((event.which) >= 65 && (event.which <= 90)) || ((event.which) >= 96 && (event.which <= 105))) {
  3.                 // LETRAS DE LA A - Z y NUMEROS
  4.                 // CODIGO BUSQUEDA
  5.             }
  6.         }

Salu2
  #7 (permalink)  
Antiguo 02/11/2012, 16:16
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Cancelacion de eventos

Un dato curioso
Si coloco un alert(event.keyCode); la tecla TAB no la reconoce, el resto de teclas funciona bien, alguien sabe la razon de esto? (teniendo en cuenta que se esta usando esta sintaxis $('#search').on('change keyup',function(event) )
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #8 (permalink)  
Antiguo 02/11/2012, 16:25
Avatar de djaevi  
Fecha de Ingreso: marzo-2007
Ubicación: Moreno, Buenos Aires
Mensajes: 400
Antigüedad: 17 años, 1 mes
Puntos: 47
Respuesta: Cancelacion de eventos

Probaste con event.which? siempre el tema de tecleo fue raro en javascript yo x ejemplo usando bind("keyup") no me funciona pero usando live("keyup") si je es extraño
  #9 (permalink)  
Antiguo 02/11/2012, 16:30
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Cancelacion de eventos

No sigue de la misma manera, el resto de las teclas funcionan correctamente, me toca usar on por los requerimientos del cliente, pero bueno algo es algo

Saludos

Edito: Despues de estar revisando detenidamente el funcionamiento del mismo me di cuenta de algo: mientras mantenia click sobre la caja de texto y luego oprimia tab, se disparaba la alerta, viendo esto puedo especular que la razon de este comportamiento es que cuando se oprime tab, la caja pierde el foco y por lo tanto los eventos asociados a este desaparecen antes de llegar a el elemento, por ello cuando el elemento no perdia el foco al mantener el click, el evento llegaba hasta el elemento y por ende soltaba la alerta

Curioso no??
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Última edición por jonni09lo; 02/11/2012 a las 16:39

Etiquetas: ajax, eventos, funcion, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:42.