Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

157
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda