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

86
Visualizações
Formato de moneda de entrada jquery

Tengo algunos problemas para crear la máscara para el campo de moneda.

1- Necesito limitar HASTA 18 caracteres (contando el '.' y el ',') Ej: 999.999.999.999,99

2 - Necesito que pongas más de un '.' (actualmente solo uno)

3 - Necesito que esto no suceda:

ingrese la descripción de la imagen aquí

Porque cuando escribo agrega el '.' justo en ese momento antes de escribir un número más.

Mi código:

 function onlyNumberAmount(input) { var v = input.value; v = v + ''; v = parseInt(v.replace(/[\D]+/g, '')); v = v + ''; v = v.replace(/([0-9]{2})$/g, ",$1"); v = v.replace(/([0-9]{3}),([0-9]{2}$)/g, ".$1,$2"); input.value = v; if(v == 'NaN') input.value = ''; }
 <input type="text" class="form-control" id="mP0" onkeyup="onlyNumberAmount(this)">

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Lo siguiente parece cumplir con sus requisitos.

 function onlyNumberAmount(input) { let v = input.value.replace(/\D+/g, ''); if (v.length > 14) v = v.slice(0, 14); input.value = v.replace(/(\d)(\d\d)$/, "$1,$2") .replace(/(^\d{1,3}|\d{3})(?=(?:\d{3})+(?:,|$))/g, '$1.'); }
 <input type="text" class="form-control" id="mP0" onkeyup="onlyNumberAmount(this)">

\d es la abreviatura de [0-9] , como estoy seguro de que sabes.

Se utiliza una anticipación positiva (?=(?:\d{3})+(?:,|$)) para garantizar la ubicación correcta del archivo .

14 es el número máximo de dígitos que pueden aparecer en la cadena.

Más explicaciones bajo petición.

about 4 years ago · Juan Pablo Isaza Relatório

0

Si, prueba si el campo ya es válido

 const moneyTest = /(\d{1,3}\.)?(\d{1,3}\.)?(\d{1,3})?(.\d{1,2})?/ if (!moneyTest.test(field)) {

Luego, si no es así, sepárelos en los campos numéricos

 var digits = /d/g.match(field); // might be field.match(/d/g)

Ahora tienes que ver si había un lugar decimal en el número original

 var dot = field.lastIndexOf(".");

Y entonces deberías ser bueno para reconstruir el número.

Pregunta: ¿Qué sucede si hay dos puntos?

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