función que valida numeros y espacios vacios

publicado por: user69350

saben tengo un problema con una función en JavaScript, les dejo el código para que vean lo que tengo:

function SoloNumeros(e){

var keynum = window.event ? window.event.keyCode : e.which;

        if ((keynum == 8) || (keynum == 46))

        return true;

        return /d/.test(String.fromCharCode(keynum));
}

Bueno resulta que tal y como indica el nombre de la función, esta me válida que el usuario solamente ingrese números, pero no me deja ingresar espacios, si me pudieran dar una sugerencia de qué y dónde debo modificar mi código para que además de validar el ingreso de números permita ingresar espacios.

Nota: Ya intenté usar un código que aparece en esta página web:
https://efunctions.wordpress.com/2011/12/09/expresiones-regulares-en-javascript/

El cual es el siguiente:

function validaSoloNumerico(cadena){

var patron = /^d*$/;

if (!cadena.search(patron))

    return true;

    else{

    return false;
        }
}

Incorporé la dirección relacionada al archivo js en el comienzo de mi pagina en html y en el “input” correspondiente añadí la propiedad onkeypress que retornaba la función y aun así no me funcionó solamente me funciona el primer código que mencioné más arriba. Bueno si me pueden ayudar, se los agradecería mucho. ¡Gracias!

solución

Te recomiendo que “trates” de entender que hace el código antes de realizar el “copia y pega”


La variable keynum almacena el código del carácter Unicode de la tecla que activa el evento onkeypress.

var keynum = window.event ? window.event.keyCode : e.which;

Es lo mismo que el siguiente código, el cual se usa por incompatibilidad de propiedades entre los diferentes exploradores.

var keynum = e.which || e.keyCode;

Luego, cuando evaluas (keynum == 8) || (keynum == 46) estás permitiendo que se active las teclas 8:backspace (Retroceso) o 46: full stop (punto). Para permitir la tecla 32:space (Espacio) es incluir el número 32.

_x000D_

_x000D_

function SoloNumeros(e){_x000D_
  var keynum = window.event ? window.event.keyCode : e.which;_x000D_
  console.log(e.which || e.keyCode);_x000D_
_x000D_
  if ((keynum == 8) || (keynum == 46) || (keynum == 32))_x000D_
    return true;_x000D_
_x000D_
  return /d/.test(String.fromCharCode(keynum));_x000D_
}

_x000D_

<input type="text" onkeypress="return SoloNumeros(event)" />

_x000D_

_x000D_

_x000D_

PD. No olvidar comentar en console.log.


Referencia:

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *