Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/04/2010, 22:19
newcomeralmeida
 
Fecha de Ingreso: junio-2009
Ubicación: chorrillos lima
Mensajes: 28
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: validar numero con dos decimales

Cita:
Iniciado por zerokilled Ver Mensaje
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;
}
" />
gracias por la respuesta de veras muy agradecido espero ayudar mas adelante en el foro.
Solo para refutarte la parte :::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.

tienes toda la razon pero cuando dije eso me referia a este codigo:

<td>Ingrese Monto::<td width="10">
<td><input type="text" name="txtmonto" id="txtmonto" onclick="validaMonto();"/>


function validaMonto(){
var monto=document.getElementById('txtmonto').value;
var patron=/^\d+(\.\d{1,2})?$/;
if(!patron.test(monto)){
window.alert('monto ingresado incorrecto');
document.getElementById('txtmonto').focus();
return false;
}else{
window.alert('monto correcto');
}
}

casi se acopla a lo que quiero pero con los eventos onclick y onsubmit mas no con los eventos onkeypress y onkeyup. Muchas gracias por ayudarme y darme el tip del onkeyup y onkeypress saludos