2
You can use the low function which checks the 8 digits and applies the points ".
" according to the standard.
You need to put onkeyup="mascara(this)"
in the field you want to mask to call the function.
Behold:
function mascara(i){
var v = i.value;
// este "if" impede que sejam inseridos
// outros caracteres que não sejam números
if(isNaN(v[v.length-1])){
i.value = v.substring(0, v.length-1);
return;
}
v = i.value.replace(/\./g,"");
i.value = v[0]
+ (v[1] ? "."+v[1] : '')
+ (v[2] ? "."+v[2] : '')
+ (v[3] ? "."+v[3] : '')
+ (v[4] || '')
+ (v[5] ? "."+v[5] : '')
+ (v[6] || '')
+ (v[7] || '');
}
// Breve explicação:
// v[x] onde "x" é a posição do caractere na string.
// Ex.: v = "foo", logo v[0] = "f", v[1] e v[2] = "o"
// Operadores:
// (v[1] ? "."+v[1] : '')
// Se v[1] for true (existe), retorna "."+v[1];
// senão, retorna '' (vazio)
// (v[4] || '')
// se v[4] for true (existe), retorna ele mesmo,
// senão retorna '' (vazio)
<input maxlength="12" type="text" id="numero" onkeyup="mascara(this)" />
Thanks friend was what I needed, but kindly, could you explain these two lines of code to me to get the logic? (v[3] "."+ v[3] ') + (v[4] || '')
– Jean Freitas
I put an explanation in the code. Abs!
– Sam