Ver Mensaje Individual
  #5 (permalink)  
Antiguo 07/04/2010, 22:02
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 14 años, 11 meses
Puntos: 1485
Respuesta: validar numero con dos decimales

honestamente y personalmente no le encuentro sentido por que validar por tecla en lugar de contenido. y ese es parte del problema que tienes. si intentas mostrar el codigo de la tecla presionada (keyCode o which) con los eventos onkeypress y onkeyup, veras que en algunas teclas devuelve un numero diferente. considera por ejemplo el punto, en onkeypress equivale a 46 mientras que onkeyup equivale 190. entonces, cuando conviertes ese valor a caracter con String.fromCharCode, los resultados son diferentes. entonces, al final estas validando el resultado de fromCharCode con una expresion. segun afirmas que con onclick u onsubmit te funciona, lo cual me esta raro porque dichos eventos no crean la propiedad which o keyCode ya que no son eventos relacionados al teclado.

no se si tu intencion es crear una mascara. no te puedo ayudar mucho en esa parte porque en mi experiencia he tenido unas dificultades y prefiero hacerlo de otras formas, pero siempre validando por contenido. una de las formas es eliminar caracteres indeseados cuando se presionan las teclas.
Código:
<input onkeyup="
var pattern = /[^0-9\.]/g; // cualquier cosa que no sea numero y punto;
this.value = this.value.replace(pattern, '');
" />
otra forma es validar el contenido cuando el campo cambia de valor o pierde foco, pero esto no dara el sentido de mascara. fijate que son dos eventos diferentes a pesar que el evento de mutacion de datos o cambio de valor se produce cuando el campo pierde foco.
Código:
<input onchange="
var pattern = /^\d+(\.\d+)?$/; // cualquier cosa que no sea numero y punto;
if(!pattern.test(this.value)){
// realizar alguna accion si el campo no es valido;
// por ejemplo, mostrar una imagen de invalido, mostrar un mensaje;
}
" />
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.