Foros del Web » Programando para Internet » Javascript »

Limitar a numeros y "-"

Estas en el tema de Limitar a numeros y "-" en el foro de Javascript en Foros del Web. Buenas! He estado haciendo algunas cosillas y un amigo me ha hecho esta funcion @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original function isNumberKey ( evt ...
  #1 (permalink)  
Antiguo 17/03/2010, 11:49
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 10 meses
Puntos: 5
Limitar a numeros y "-"

Buenas!

He estado haciendo algunas cosillas y un amigo me ha hecho esta funcion

Código Javascript:
Ver original
  1. function isNumberKey(evt)
  2.       {
  3.          var charCode = (evt.which) ? evt.which : event.keyCode
  4.          if (charCode > 31 && (charCode < 48 || charCode > 57))
  5.             return false;
  6.  
  7.          return true;
  8.       }

De esta forma en los input que quiera, solo se pueden poner numeros ahora, no habia caido en que era posible que algunos numeros cayeran en negativo y claro, no me deja. He probado haciendo cosas del tipo

Código Javascript:
Ver original
  1. if (charCode > 31 && (charCode < 48 || charCode > 57 || charCode != 45))

Pero ni se Javascript ni estoy seguro de que el 45 haga referencia al guión. He buscado una tabla pero vamos, no estoy muy metido en el tema este asi que no se si he buscado lo que tenia que buscar. Tambien he mirado por google pero esque tampoco se muy bien que o como deberia buscarlo y no encuentro la forma.

Solo me queda pedir ayuda por aqui : <
  #2 (permalink)  
Antiguo 17/03/2010, 12:46
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Limitar a numeros y "-"

No necesitás probar que charCode sea mayor de 31 si luego probás que esté entre 57 y 48.
Código Javascript:
Ver original
  1. function isNumberKey(evt) {
  2.     var charCode = (evt.which) ? evt.which : event.keyCode
  3.  
  4.     return (charCode >= 48 && charCode <= 57) || (charCode == 45)
  5. }

De todas formas ten en cuenta que "-4-5506-7" sería una entrada válida, pero no es un número. Es mejor no inventar y validar el número usando lo que ya está en el lenguaje:
Código Javascript:
Ver original
  1. function esEntero(num) {
  2.     return ! isNaN(parseInt(num, 10));
  3. }


Saludos.
  #3 (permalink)  
Antiguo 17/03/2010, 13:19
 
Fecha de Ingreso: febrero-2008
Mensajes: 269
Antigüedad: 16 años, 10 meses
Puntos: 5
Respuesta: Limitar a numeros y "-"

Cita:
Iniciado por AlvaroG Ver Mensaje
No necesitás probar que charCode sea mayor de 31 si luego probás que esté entre 57 y 48.
Código Javascript:
Ver original
  1. function isNumberKey(evt) {
  2.     var charCode = (evt.which) ? evt.which : event.keyCode
  3.  
  4.     return (charCode >= 48 && charCode <= 57) || (charCode == 45)
  5. }

De todas formas ten en cuenta que "-4-5506-7" sería una entrada válida, pero no es un número. Es mejor no inventar y validar el número usando lo que ya está en el lenguaje:
Código Javascript:
Ver original
  1. function esEntero(num) {
  2.     return ! isNaN(parseInt(num, 10));
  3. }


Saludos.
Pues usando el codigo "inventado" funciona y usando lo que ya está en el lenguaje me deja poner numeros letras y de todo :\

Suponiendo que lo que tu has escrito sobreescribe mi codigo (y cambiando las palabras que se tengan que cambiar)
  #4 (permalink)  
Antiguo 17/03/2010, 14:52
 
Fecha de Ingreso: diciembre-2009
Mensajes: 56
Antigüedad: 15 años
Puntos: 0
Respuesta: Limitar a numeros y "-"

Porque no lo compruebas con un parseInt?
  #5 (permalink)  
Antiguo 17/03/2010, 15:07
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Limitar a numeros y "-"

Cita:
Iniciado por Vendetta Ver Mensaje
Pues usando el codigo "inventado" funciona y usando lo que ya está en el lenguaje me deja poner numeros letras y de todo :\
Claro, uno usa lo que funciona, pero como ves resulta imposible de extender manteniendo funcionalidad.
La única comprobación que se me ocurre es que agreges una comprobación que permita el guión *solamente* en el primer caracter.

Cita:
Iniciado por Vendetta Ver Mensaje
Suponiendo que lo que tu has escrito sobreescribe mi codigo (y cambiando las palabras que se tengan que cambiar)
No, es un ejemplo. Sirve para comprobar una cadena, no un evento, y por lo tanto no funciona si lo aplicás directamente.
La forma más directa de usarlo para sustituir tu código es cambiar la línea 4 del primer bloque de código que puse por la línea 2 del segundo, cambiando "num" por "charCode"


Saludos.

Etiquetas: limitar, numeros
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 19:51.