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" />