Foros del Web » Programando para Internet » Javascript »

validar numero con dos decimales

Estas en el tema de validar numero con dos decimales en el foro de Javascript en Foros del Web. hola quisiera validar que el usuario escriba una longitud cualquiera antes del punto y una longitud de hasta dos numeros despues del punto y quisiera ...
  #1 (permalink)  
Antiguo 07/04/2010, 17:50
 
Fecha de Ingreso: junio-2009
Ubicación: chorrillos lima
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
Busqueda validar numero con dos decimales

hola quisiera validar que el usuario escriba una longitud cualquiera antes del punto y una longitud de hasta dos numeros despues del punto y quisiera para IE mi codigo es el siguiente pero no funciona ayudenme

<tr><td>Ingrese Monto::<td width="10">
<td><input type="text" name="txtmonto" id="txtmonto" onkeypress="return validaMonto(event)"/>

function validaMonto(e){
tecla = (document.all) ? e.keyCode : e.which;//obtenemos el codigo ascii de la tecla
if (tecla==8) return true;//backspace en ascii es 8
patron= new RegExp("^[0-9]+(\.)?[\d{1,2}]$","gi");
te = String.fromCharCode(tecla);//convertimos el codigo ascii a string
return patron.test(te);
}
  #2 (permalink)  
Antiguo 07/04/2010, 19:58
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: validar numero con dos decimales

te animo a que utilices las herramientas de busqueda del foro. varios temas que encontre con situaciones similares:
http://www.forosdelweb.com/f13/valid...imales-756597/
http://www.forosdelweb.com/f13/funci...moneda-753776/
http://www.forosdelweb.com/f13/numer...-input-693227/
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 07/04/2010, 20:45
 
Fecha de Ingreso: junio-2009
Ubicación: chorrillos lima
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: validar numero con dos decimales

hola primero agradecerte por responder pero mi problema no es parecido a los demas te explico acabo detectar que el problema esta en el evento con el que llamo la funcion mi expresion regular: patron=/^\d+(\.\d{1,2})?$/; funciona perfectamente si la llamo con el evento onclick onsumbit me funciona perfecto pero cuando la llamo con el onkeypress no me funciona en el codigo que te muestro solo cambia esta el patron que te muestro ahora por el anterior como te digo no se a que se deba la estoy probando en explorer 6 pero no funciona y si cambio de evento si funciona espero me puedan ayudar llevo con esto ya dos dias
  #4 (permalink)  
Antiguo 07/04/2010, 20:46
 
Fecha de Ingreso: junio-2009
Ubicación: chorrillos lima
Mensajes: 28
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: validar numero con dos decimales

Cita:
Iniciado por zerokilled Ver Mensaje
te animo a que utilices las herramientas de busqueda del foro. varios temas que encontre con situaciones similares:
[url]http://www.forosdelweb.com/f13/validacion-campos-numericos-positivos-con-3-decimales-756597/[/url]
[url]http://www.forosdelweb.com/f13/funcion-para-validar-campo-moneda-753776/[/url]
[url]http://www.forosdelweb.com/f13/numeros-comas-input-693227/[/url]
hola primero agradecerte por responder pero mi problema no es parecido a los demas te explico acabo detectar que el problema esta en el evento con el que llamo la funcion mi expresion regular: patron=/^\d+(\.\d{1,2})?$/; funciona perfectamente si la llamo con el evento onclick onsumbit me funciona perfecto pero cuando la llamo con el onkeypress no me funciona en el codigo que te muestro solo cambia esta el patron que te muestro ahora por el anterior como te digo no se a que se deba la estoy probando en explorer 6 pero no funciona y si cambio de evento si funciona espero me puedan ayudar llevo con esto ya dos dias
  #5 (permalink)  
Antiguo 07/04/2010, 22:02
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 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.
  #6 (permalink)  
Antiguo 07/04/2010, 22:19
 
Fecha de Ingreso: junio-2009
Ubicación: chorrillos lima
Mensajes: 28
Antigüedad: 15 años, 5 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

Etiquetas: dos, numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:45.