Mask Accounting plan in javascript [closed]

3

How can I make a function in javascript to format the values entered in an input to the standard chart of accounts chart similar to the one below.

1 (min)
1.1
1.1.1
1.1.1.01
1.1.1.01.001 (max)

Column Account

    
asked by anonymous 09.03.2018 / 03:06

1 answer

4

You can use the low function that checks the 8 digits and applies the dots " . " to the default.

You need to put onkeyup="mascara(this)" in the field you want to mask to call the function.

See:

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)" />
    
09.03.2018 / 06:51