Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Validar solo números.

Estas en el tema de Validar solo números. en el foro de Javascript en Foros del Web. Hola a todos, Tengo un control textbox, en el cual valido con una función JS que solo ingrese números enteros: ASPX <asp:TextBox ID="txtRango1" runat="server" MaxLength="4" ...
  #1 (permalink)  
Antiguo 13/01/2016, 09:18
 
Fecha de Ingreso: junio-2007
Mensajes: 253
Antigüedad: 16 años, 10 meses
Puntos: 0
Validar solo números.

Hola a todos,

Tengo un control textbox, en el cual valido con una función JS que solo ingrese números enteros:

ASPX
<asp:TextBox ID="txtRango1" runat="server" MaxLength="4" onkeydown="return soloNumeros(event);"></asp:TextBox>

JS
function soloNumeros(evt) {
var key = evt.keyCode;
return (((key >= 37 && key <= 40) || (key >= 48 && key <= 57) || (key >= 96 && key <= 105) || (key >= 8 && key <= 9) || (key == 190)));
}

Sin embargo, si me permite ingresar los siguientes símbolos: como %$"

Podrían por favor ayudarme a mejorar esta función.

Gracias.
  #2 (permalink)  
Antiguo 13/01/2016, 10:31
 
Fecha de Ingreso: septiembre-2015
Mensajes: 58
Antigüedad: 8 años, 7 meses
Puntos: 2
Respuesta: Validar solo números.

Cita:
Iniciado por Rodro Ver Mensaje
Hola a todos,

Tengo un control textbox, en el cual valido con una función JS que solo ingrese números enteros:

ASPX
<asp:TextBox ID="txtRango1" runat="server" MaxLength="4" onkeydown="return soloNumeros(event);"></asp:TextBox>

JS
function soloNumeros(evt) {
var key = evt.keyCode;
return (((key >= 37 && key <= 40) || (key >= 48 && key <= 57) || (key >= 96 && key <= 105) || (key >= 8 && key <= 9) || (key == 190)));
}

Sin embargo, si me permite ingresar los siguientes símbolos: como %$"

Podrían por favor ayudarme a mejorar esta función.

Gracias.
hola rodro

respecto a tu pregunta, te deja ingresar esos caracteres porque dentro de tu if estas permitiendolo, si analizas en la tabla de código ascii, los valores entre el 37 y el 40 son %, & ' (, por eso es que se permite que dichos simbolos se ingresen dentro de la caja.

si quieres que unicamente se ingresen números dentro de la caja tienes que limitar tu if. tendrías que dejarlo unicamente así;
Código Javascript:
Ver original
  1. (key >= 48 && key <= 57)
  #3 (permalink)  
Antiguo 13/01/2016, 10:45
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Validar solo números.

Otra forma es mediante una expresión regular:
Código Javascript:
Ver original
  1. tuInput.addEventListener("keypress", function(event){
  2.     if (!/\d/.test(String.fromCharCode(event.keyCode))){
  3.         event.preventDefault();
  4.     }
  5. }, false);

Prefiero utilizar el evento keypress porque es cuando la tecla llega al final y se dispone a imprimir el carácter. Si el método .test() devuelve false porque el carácter ingresado no es un número, se cancela la impresión del mismo mediante el método .preventDefault().

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 21/01/2016, 08:43
 
Fecha de Ingreso: junio-2007
Mensajes: 253
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Validar solo números.

Hola jmg1189,
Aún dejando (key >= 48 && key <= 57), sigue permitiendo el ingreso de estos caracteres $%&.

Pero encontré esta solución:

function soloNumeros(e) {
tecla = (document.all) ? e.keyCode : e.which;
if (tecla == 8) return true;
patron = /\d/;
te = String.fromCharCode(tecla);
return patron.test(te);
}

<asp:TextBox ID="txtRango1" runat="server" MaxLength="4" Text='<%#FormatNumber(Eval("mayor_igual"),0) %>'
onkeypress="return soloNumeros(event);"></asp:TextBox>

Gracias.

Etiquetas: js
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 01:05.