2012-05-31 29 views
5

Estoy tratando de desarrollar un plugin jQuery para realizar una acción cuando el usuario ingresa una frase clave específica.Combinar keypress y keyup - jQuery

Por ejemplo, quiero hacer coincidir "HOLA" en la tecla.

var controllerKey = []; 
$(window).keyup(function(evt) { 
    var code = evt.keyCode ? evt.keyCode : evt.which; 
    controllerKey.push(code); 
} 
[...] 

Entonces, comparo mi controllerKey con mi cadena "HOLA" (gracias a str.charCodeAt()) y algunas otras cosas, pero esto no es importante aquí. Todo funciona bien en este momento.

Mi problema sucede cuando quiero igualar "Hola" (de hecho, cuando la cadena tenía algún mayúsculas). Vi en los foros que keyup o keydown no hacen ninguna diferencia.

Así que utilizo las teclas que lo gestionan muy bien pero la pulsación de teclas no me permite hacer coincidir las teclas de flecha y una (en Chrome).

Quiero saber si es posible combinar la pulsación de tecla y la tecla (solo cuando la pulsación de tecla no coincide con el evento).

Gracias de antemano.

+0

¿Están ingresando esta frase dentro de una entrada? ¿También mencionas que tu problema es comparar cadenas de casos diferentes y luego preguntas sobre la tecla y la tecla? – lucuma

+0

No. Es un complemento para hacer como un "código konami" pero con la contraseña de su elección. Estoy comparando la primera cadena (frase clave) con la entrada del usuario –

+0

Creo que soy demasiado viejo para saber qué código konomi es, sin embargo, le he proporcionado una respuesta sobre la combinación de ambos eventos. – lucuma

Respuesta

9

Puedes combinarlos como esto:

$(window).on('keyup keypress', function(e) { 
    if (e.type=="keyup") { 

    } else { 
     // it is keypress 
    } 
}); 
+0

En consecuencia, puede comparar fácilmente cadenas por s.toUpperCase() == t.toUpperCase() – lucuma

+0

Su respuesta me será de ayuda. Gracias. (No quiero utilizar upperCase para la comparación porque quiero mantener esta información) –

+0

¿Hay alguna razón para que esto no funcione en IE? – RMiranda

2

Puede utilizar un campo oculto y eventos clave el fin de tener el caso de navegadores comparar sensible.