Foros del Web » Programando para Internet » Javascript »

Validar numeros

Estas en el tema de Validar numeros en el foro de Javascript en Foros del Web. hola tengo esta función que me valida que ingresen solo numeros, el problema es que solo funciona en IE y en firefox no puedo ingresar ...
  #1 (permalink)  
Antiguo 21/03/2009, 12:22
Avatar de rol2007  
Fecha de Ingreso: mayo-2007
Ubicación: Santiasco CHILE
Mensajes: 300
Antigüedad: 17 años
Puntos: 4
Validar numeros

hola tengo esta función que me valida que ingresen solo numeros, el problema es que solo funciona en IE y en firefox no puedo ingresar puntos decimal

si alguien sabe como se debiera validar se lo agradezco he buscado los códigos ascii y no encuentro nada para que los tome

gracias

Código:
<script>
function KeyIsDecimal2(evt )
{
	var isNav = (navigator.appName.indexOf("Netscape") != -1)
	var isIE = (navigator.appName.indexOf("Microsoft") != -1)

	if (isNav) {
		if ( evt.which == 13 || evt.wich == 46 || evt.which == 8 || evt.wich == 110 ||(evt.which >= 48 && evt.which <=57) ){
			if (evt.which == 46 && txt.indexOf('.')!=-1) return false;
			return true;
		}
		return false;
	}
	else if (isIE){
		evt = window.event;
		if ( evt.keyCode == 13 || evt.keyCode == 46 || evt.keyCode == 8 || (evt.keyCode >= 48 && evt.keyCode <= 57) ){
			if (evt.keyCode == 46 && txt.indexOf('.')!=-1) return false;
	
			return true;
		}
		return false;
	}
	else {
		alert("Su browser no es soportado por esta aplicación")
		}
	return false
}
</script>
	<tr>
				<td> Monto: </td><td><input type="text" name="monto" 
<input name="txt_rut" maxlength=8 size=8 tabindex=1 onkeypress="KeyIsDecimal2(event)"></td> 
 
 
			 <br>
			 

			<td><input type="button" name="enviar" value="Guardar">
			</tr>
__________________
Saludos
desde Chile
  #2 (permalink)  
Antiguo 21/03/2009, 12:28
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Validar numeros

Para empezar estas dejando que solo los navegadores Netscape e IE puedan tener acceso a la funcionalidad. Si el navegador no es ninguno de estos dos, entonces lo estas rechazando.

Yo te sugiero que en lugar de eso, uses una expresión regular.

Mira aquí: http://forums.asp.net/t/897862.aspx
__________________
twitter: @imbuzu
  #3 (permalink)  
Antiguo 22/03/2009, 13:32
 
Fecha de Ingreso: agosto-2006
Mensajes: 4
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Validar numeros

Hola rol2007, tu código es algo antiguo (de la era de IE4 y Netscape 4, 1998-2000!!), en la actualidad podemos simplificarlo de la siguiente manera:


Código javascript:
Ver original
  1. function isDecimalKey(evt, txt){
  2.     var key = evt.which || evt.keyCode;
  3.     // Capturar el codigo de la tecla presionada.
  4.     // Si no es evt.which, usar evt.keyCode (para IE)
  5.  
  6.     if ((key == 13 || key == 46 || key == 8) || (key >= 48 && key <=57)){
  7.     // Si la tecla es backspace, enter, punto o digito
  8.         if (key == 46 && txt.indexOf('.')!=-1){
  9.         // Si es el caracter "." comprobar que sea el unico
  10.             return false;
  11.         }
  12.         return true;
  13.     }
  14.     return false;
  15. }



Ah y no olvides poner en tus inputs lo siguiente:

Código html:
Ver original
  1. <input type="text" name="monto"
  2.          onkeypress="return isDecimalKey(event, this.value)">

Básicamente la función isDecimalKey retornara true si la tecla presionada es un dígito, o si es el primer punto ingresado, de lo contrario retornará false, impidiendo que se pueda ingresar cualquier texto que no cumpla con lo anterior.

Puedes probar el código anterior acá: jsbin.com/itute
(Lo siento, no puedo incluir enlaces externos debido a que no tengo mas de 30 mensajes!)


Saludos,

-- CMS
  #4 (permalink)  
Antiguo 22/03/2009, 14:04
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: Validar numeros

y se puede simplificar aun mas

Código:
<script>
function soloNumeros(evt) {
	var tecla = String.fromCharCode(evt.which || evt.keyCode);
	if ( !/[\d.\b\r]/.test(tecla) ) return false;
	return true;
}
</script>

<input type="text" id="texto" onkeypress="return soloNumeros(event);"
La expresion regular acepta digitos, punto, retroceso y enter
  #5 (permalink)  
Antiguo 22/03/2009, 17:34
Avatar de buzu  
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Validar numeros

habría que hacer un análisis para ver cual de los dos métodos conviene más, algunas veces los métodos primitivos son más efectivos por lo que si lo mismo se cumpliera en este caso el if es mejor que el .test, pero de eso no estoy seguro.
__________________
twitter: @imbuzu
  #6 (permalink)  
Antiguo 23/03/2009, 07:45
Avatar de rol2007  
Fecha de Ingreso: mayo-2007
Ubicación: Santiasco CHILE
Mensajes: 300
Antigüedad: 17 años
Puntos: 4
Respuesta: Validar numeros

muchas gracias ...revisare los códigos y les cuento como les fue
y es verdad la funcion es re antigua la encontré en un archivo js de unos proyectos atras

probe la de CMSalvado y resulto sin problemas en FF y IE
muchas gracias a todos!
__________________
Saludos
desde Chile

Última edición por rol2007; 23/03/2009 a las 08:27 Razón: todo ok
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 04:52.