Máscara javascript para peso com preenchimento ao contrário
Fiz esse código pq nenhuma das minhas outras máscaras em javascript resolvia.
O comportamento é:
digitar: 1 aparecer 0,0001
digitar: 12 aparecer 0,0012
digitar: 123 aparecer 0,0123
digitar: 1234 aparecer 0,1234
digitar: 12345 aparecer 1,2345
digitar: 123456 aparecer 12,3456
digitar: 1234567 aparecer 123,4567
O bloco do if pode ser refatorado para ficar mais “bonito” e menos manual. Mas já é uma idéia de como fazer essa máscara para “peso”, usando javascript e um pouquinho de expressão regular.
<script type="text/javascript"> function id(el){ return document.getElementById(el); } window.onload = function(){ id('peso').onkeyup = function(){ var v = this.value, integer = v.split(',')[0]; v = v.replace(/\D/, ""); v = v.replace(/^[0]+/, ""); if(v.length <= 4 || !integer) { if(v.length === 1) v = '0,000' + v; if(v.length === 2) v = '0,00' + v; if(v.length === 3) v = '0,0' + v; if(v.length === 4) v = '0,' + v; } else { v = v.replace(/^(\d{1,})(\d{4})$/, "$1,$2"); } this.value = v; } }; </script> <input type="text" name="peso" id="peso" maxlength="8" />