2010-08-09 17 views
5

Intentando hacer alguna validación de jQuery (sin el complemento, por favor, no responda como "Simplemente use el complemento validate-js").jQuery .keyPress() - ¿Cómo obtener el valor de la entrada que desencadenó el evento?

Estoy cableando un controlador de eventos del lado del cliente para cada keypress "campo requerido" en la lista doc:

$(document).ready(function() { 
    $('#myform input.required').each(function() { 
    $(this).keypress(onRequiredFieldKeyPress); 
    }); 
}); 

que dispara correctamente este evento en cada pulsación de tecla:

function onRequiredFieldKeyPress() { 
    if ($(this).val().trim() == '') { 
     $(this).next('em').html('*').show(); // show req field indicator 
    } else { 
     $(this).next('em').html('*').hide(); // hide req field indicator 
    } 
} 

Pero $ (this) .val() siempre es nulo/vacío. Parece que está pasando un "HTMLInputElement" que es lo que esperaría, pero es casi como si tuviera que proyecto esto en algún otro tipo jQuery?

Básicamente estoy tratando de hacer esto: en el evento de pulsación de tecla de cualquier campo que haya conectado (que son todos los elementos de entrada), llame a esa función. En esa función, si ese campo tiene un valor de '' (vacío), entonces muestra un campo oculto que muestra un indicador de campo requerido.

Realmente no me importa que elemento real disparó la tecla, ya que el comportamiento de mi lógica será el mismo. Solo necesito obtener el valor real.

¿Echo de falta algo?

Respuesta

9

porque está utilizando pulsación de tecla evento. pulsación de tecla tiene 3 fases: 1.
clave abajo: cuando la llave es de prensa
2. Mantener pulsada la tecla: clave es mantener pulsada
3. Tecla arriba: clave es liberar
En su caso, problema puede ser resuelto mediante el uso de evento de llave

$(document).ready(function() { 
    $('#myform input.required').each(function() { 
    $(this).keyup(onRequiredFieldKeyPress); 
    }); 
}); 
+0

Sí, eso fue todo. ¡Gracias! – RPM1984

1

Pruebe usar event.currentTarget, donde evento es el primer parámetro de su función.

Ver aquí: http://api.jquery.com/event.currentTarget

+0

devuelve lo mismo que (esto) ... (HtmlInputElement). Creo que estoy obteniendo lo correcto, simplemente no sé cómo obtener el valor del evento de pulsación de tecla. – RPM1984

Cuestiones relacionadas