2012-10-04 20 views
5

Estoy teniendo un momento difícil con keydown y dejar de propagaciónjQuery gatillo() y stopPropagation() en el evento KeyDown

i no quiero que mi página se actualice, he intentado todas las maneras que se me ocurre, mi el código actual es

<script> 
$(document).ready(function() { 
var e = jQuery.event('keydown', { which: $.ui.keyCode.ENTER }); 

$('#id_number').trigger(e, function(event){ 
event.preventDefault(); 
event.stopPropagation(); 
}); 

}); 
</script> 

¿Alguna idea de qué estoy haciendo mal aquí? Pensé que el evento fue llamado correctamente, tengo jQuery y jQuery UI vinculado correctamente y recibir sin errores consola

ACTUALIZACIÓN bien que estaba trabajando, ahora im conseguir la propiedad 'evento' de la función objetivo (a, b) {return new e.fn.init (a, b, h)} no es un error de la función en el código de abajo

$(document).ready(function() { 
var e = jQuery.event('keydown', { which: $.ui.keyCode.ENTER } , function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

$('#id_number').trigger(e); 

}); 

Actualización # 2 - fijo

cosas que aprendí

  1. trigger() no es necesario en el documento (listo)
  2. recibiendo $ .ui.keyCode al trabajo era difícil (al menos para mí)
  3. siempre ver qué otras funciones vinculadas a la entrada (onBlur, onfocus, etc.) también conocido como doh

volvió a escribir a esto, funciona perfectamente bien

$(document).ready(function() { 
    $('#id_number').keydown(OnKeyDown); 
});  

function OnKeyDown(e){ 
var code = (e.keyCode ? e.keyCode : e.which); //to support both methods 
if(code == 13) { //the Enter keycode 

    //my actions 
return false; 
} 
} 
+0

¿Usted intentó volver 'false'? – TheZ

+0

¿Por qué crees que la función 'event' (* que debes cambiar a' Event' con mayúscula E *) toma un tercer argumento? de acuerdo con los documentos solo toma dos argumentos ... primero es el tipo de evento y el segundo es un objeto con propiedades de evento ... –

+0

porque estaba pensando tonto? Se confundió, siento que su respuesta fue correcta, simplemente no pude hacer que funcione hasta que reescribí el código –

Respuesta

7

el código para detener la acción predeterminada debe ir al elemento que el evento se aplica a ..

$('#id_number').keydown(function(event){ 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

El segundo argumento es para .trigger()extraParameters

+0

gracias, poniendo el stopPropagation y preventDefault en el evento keydown funcionó, actualizó mi pregunta con la respuesta, muchas gracias, hermosa –

Cuestiones relacionadas