Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] ¿Cómo Validar si un número escrito es válido?

Estas en el tema de ¿Cómo Validar si un número escrito es válido? en el foro de Jquery en Foros del Web. Hola amigos!!! Ando en busca de una solución para evaluar si un número ha sido escrito correctamente, tengo la siguiente función de jQuery: Código: $(document).ready(function ...
  #1 (permalink)  
Antiguo 07/05/2014, 00:30
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 2 meses
Puntos: 3
Pregunta ¿Cómo Validar si un número escrito es válido?

Hola amigos!!!

Ando en busca de una solución para evaluar si un número ha sido escrito correctamente, tengo la siguiente función de jQuery:

Código:
$(document).ready(function () {
    $("#numero").keydown(function (e) {
        var keyCode = e.which;
        if (keyCode != 8 && keyCode != 9 && keyCode != 13 && keyCode != 37 && keyCode != 38 && keyCode != 39 && keyCode != 40 && keyCode != 46 && keyCode != 110 && keyCode != 190) {
            if (keyCode < 48) {
                e.preventDefault();
            } else if (keyCode > 57 && keyCode < 96) {
                e.preventDefault();
            } else if (keyCode > 105) {
                e.preventDefault();
            }
        }
    });
});
el demo aquí está

Sin embargo, como podrán ver, esto les permite escribir un número como: 15.021..152.... o cosas así, y yo deseo que sea evaluado que solo tenga un único punto decimal ya que es un campo para "IMPORTE"...

¿Alguien podría ayudarme a indicarme cómo evaluarlo por favor?
  #2 (permalink)  
Antiguo 07/05/2014, 01:15
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: ¿Cómo Validar si un número escrito es válido?

Un valor es un número válido si no es un isNaN, es decir, si no es un "is not a number", o "no es un número". Lo contrario a isNaN, es un número.

Código Javascript:
Ver original
  1. if (isNaN(valor)){
  2.     alert ("No es un número");
  3. }
  4. else{
  5.     alert ("Es un número");
  6. }



Saludos
__________________
«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

Última edición por Alexis88; 07/05/2014 a las 01:37 Razón: Corrección ortográfica
  #3 (permalink)  
Antiguo 07/05/2014, 09:09
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 3 meses
Puntos: 578
Respuesta: ¿Cómo Validar si un número escrito es válido?

Cita:
Iniciado por Alexis88 Ver Mensaje
Un valor es un número válido si no es un isNaN
Sin embargo, comprobar si cierto valor es un número únicamente mediante la función isNaN() es un error muy frecuente.

Quiero que veas lo que ocurre si dejas el campo vacío y presionas la tecla Enter... automáticamente ese string vacío se transforma en un 0, que claramente es un número válido:

Código Javascript:
Ver original
  1. alert(Number("")); // 0

La forma más adecuada de comprobarlo es utilizando el constructor typeof, pero en este caso como lo que obtenemos del input es siempre texto, se requiere dicha conversión. Pero antes de ello debes pasarle un trim() para quitar posibles espacios en blanco; tabulaciones, saltos de línea etc. ya que todos ellos equivalen a 0, incluyendo el string vacío por supuesto, pero éste debes excluirlo manualmente con un AND:

Código Javascript:
Ver original
  1. valor = valor.trim();
  2.  
  3. if (!isNaN(valor) && valor != ""){
  4.     alert ("Es un número");
  5. }else{
  6.     alert ("No es un número");
  7. }

De esta forma consigues algo coherente.


Saludos.

Última edición por PHPeros; 07/05/2014 a las 10:32
  #4 (permalink)  
Antiguo 07/05/2014, 11:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: ¿Cómo Validar si un número escrito es válido?

Se me había pasado ese detalle, a veces también hacía la comprobación con typeof valor == number, pero me parece más práctico el uso de isNaN. Se me van algunos detalles a las 2:15 am.

Como un pequeño extra, esto también es válido:

Código Javascript:
Ver original
  1. !isNaN(valor) && valor.length

Saludos
__________________
«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
  #5 (permalink)  
Antiguo 08/05/2014, 11:05
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 16 años, 2 meses
Puntos: 3
De acuerdo Respuesta: ¿Cómo Validar si un número escrito es válido?

Muchas gracias Alexis88 y PHPeros por sus respuestas.

He utilizado el simple

Código:
if (isNaN(valor)){
    alert ("No es un número");
}
else{
    alert ("Es un número");
}
Ya que con la función de JQuery que tengo solo deja pasar los números del 0 al 9 y los puntos decimales, por ende, los espacios en blanco que generan un 0 no me preocupó, pues al no dejar escribir espacio y de no escribir nada lo filtré con PHP para en caso de "empty" ignorarlo.

Aún así, he probado los códigos que han propuesto ustedes y me han servido para aprendizaje, que podría usar en otras circunstancias.

Mil gracias por la ayuda

Etiquetas: escrito
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 20:36.