Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
Javscript elimina todos menos los números positivos, las comas y los puntos de la entrada

Tengo un campo de entrada type="number" . En keyup , necesito quitar todos los caracteres (incluido - ) excepto 0-9 . y , (no me importa el orden). Esto resulta sorprendentemente difícil: aún no he encontrado una respuesta.

Obtuve lo siguiente:

 $input.on('keyup change', () => { $input.val($input.val().replace(/[^0-9\,\.]/,'')); });

La expresión regular es de este hilo ( Rails quita todo excepto las comas de números y los puntos decimales ), pero no funciona, si escribo 1. la entrada desaparece.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Parece que al menos en algunos navegadores (Edge) el valor del campo type="number" devuelve un valor desinfectado, lo que significa que lo que ve en la pantalla puede ser diferente de lo que ve javascript (por ejemplo, el valor para 99. será 99 (sin punto) ).

Además, estos campos no permiten cambiar la posición del cursor, lo que significa que si reemplaza su valor, el cursor siempre estará al final.

Debido a estas limitaciones, tal vez sea mejor que utilice la entrada de texto normal y la desinfecte manualmente dejando solo los caracteres que desee:

 test.addEventListener("input", e => { let start = test.selectionStart; //remove invalid characters test.value = test.value.replace(/[^0-9,.]/g, (letter, index) => { if (index <= start) start--; return ""; }) //remove duplicate , and . .replace(/([,.])(.*)[,.]/g, (a, b, c, index) => { if (index <= start) start -= a.length - b.length - c.length; return b+c; }); test.selectionStart = test.selectionEnd = start; });
 <input id="test">

about 4 years ago · Juan Pablo Isaza Denunciar

0

Considere usar Valor absoluto.

 $(function() { $("#myNumber").on('keyup change', function(event) { $(this).val(Math.abs($(this).val())); }); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="number" id="myNumber" min="0" />

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda