Foros del Web » Programando para Internet » Javascript »

Limitar el ingreso de sólo números y 1 punto

Estas en el tema de Limitar el ingreso de sólo números y 1 punto en el foro de Javascript en Foros del Web. Buenas noches: Yo uso esta función para hacer que sólo ingresen números, y la segunda para sólo números y puntos (como para escribir 12.3.23.21) Código: ...
  #1 (permalink)  
Antiguo 15/08/2012, 23:57
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Limitar el ingreso de sólo números y 1 punto

Buenas noches:
Yo uso esta función para hacer que sólo ingresen números, y la segunda para sólo números y puntos (como para escribir 12.3.23.21)

Código:
var nav4 = window.Event ? true : false;
function acceptNum(evt)
{	
	var key = nav4 ? evt.which : evt.keyCode;	
	return (key <= 13 || (key >= 48 && key <= 57) || key == 40);
}

function acceptNum2(evt)
{	
	var key = nav4 ? evt.which : evt.keyCode;
	return (key <= 13 || (key >= 48 && key <= 57) || key == 46);
}
Sin embargo ahora necesito hacer que sólo pueda ingresarse números y únicamente un punto decimal como para escribir 12.43892

La función la invoco de esta forma


Código:
<input type="text" name="uta" size="5" maxlength="5" class="texto_normal" onKeyPress="return acceptNum2(event);">

No encuentro, de momento, forma de hacerlo. Pensé que podría hacerlo con variable.split(".").length - 1 pero como estoy usando el evento onKeyPress no se como poder integrarlo, porque para usar el split mencionado tendría que capturar el integro de lo ingresado, pero no encuentro forma salvo si usara el evento onChange pero lo que necesito es que "en tiempo real" me permita sólo 1 punto.

Espero haberme explicado bien.
Agradezco desde ya el apoyo que me puedan brindar.

Un saludo desde Lima, Perú
  #2 (permalink)  
Antiguo 16/08/2012, 11:06
 
Fecha de Ingreso: agosto-2012
Mensajes: 37
Antigüedad: 11 años, 8 meses
Puntos: 12
Respuesta: Limitar el ingreso de sólo números y 1 punto

evalúa el contenido y si tiene un pinto ya que no acepte el numero
Código Javascript:
Ver original
  1. if(cadena.indexOf('.')==-1)
__________________
Pedro Gutiérrez, diseñador y desarrollador web freelance en Toledo,
busco soluciones a los proyectos web que me propongas.

Visita mi web-blog: http://xitrus.es
  #3 (permalink)  
Antiguo 16/08/2012, 13:15
Avatar de freesoftwarrior  
Fecha de Ingreso: marzo-2006
Mensajes: 362
Antigüedad: 18 años, 1 mes
Puntos: 10
Respuesta: Limitar el ingreso de sólo números y 1 punto

Muchas gracias por tu respuesta.
No estoy seguro en que parte del código poner la línea que me has indicado, voy a hacer pruebas, pero el caso es que sólo quiero bloquear el ingreso de otro punto, no de un número, porque por ejemplo si ingresó 12.3 y quiere ingresar 12.3.3 no le acepte el 2do. punto pero si puede escribir 12.33.

Espero haberme dejado entender.

Mil gracias por tu apoyo

P.D.

Probé hacerlo así

Código:
function acceptNum2(evt)	//Sólo números y SÓLO 1 punto decimal
{	
	// Punto = 46
	var key = nav4 ? evt.which : evt.keyCode;
	cadena=document.getElementById("uta").value;
	if(cadena.indexOf('.')==-1)
	{return (key <= 13 || (key >= 48 && key <= 57) || key == 46);}
	else
	{alert("no"); return null;}
	
}
Pero aunque me muestra el alert, igual, luego de ponerle "aceptar" al alert, me sigue publicando el 2do punto. ¿Que estoy haciendo mal?

Muchas gracias por el apoyo
Un saludo desde Lima, Perú


P.D. 2
SOLUCIONADO

La cosa era ponerlo así

Código:
function acceptNum2(evt)	//Sólo números y SÓLO 1 punto decimal
{	
	// Punto = 46
	var key = nav4 ? evt.which : evt.keyCode;
	cadena=document.getElementById("uta").value;
	if(cadena.indexOf('.')==-1)
	{return (key <= 13 || (key >= 48 && key <= 57) || key == 46);}
	else
	{return (key <= 13 || (key >= 48 && key <= 57));}
	
}

Última edición por freesoftwarrior; 16/08/2012 a las 13:29 Razón: Problema solucionado

Etiquetas: ingreso, input, limitar, punto
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 13:26.