Help in a JavaScript mask for a form

0

One of the form fields requires the following validation:

It should contain 6 numbers, the latter being the result of the sum of the others. If this sum is greater than 10, you must add all the figures of the result until the new result meets this requirement. If the sum is 10, the value considered for the sixth number of the "Registration number" is 0.

HTML:

Número de Registro:<br >< input type="text" name="registro" onblur="validaRegistro(this.value)">< div id="m3">< /div>

JavaScript:

function validaRegistro(value) {
  var padrao = /^[0-9]+$/;
  if (value.match(padrao)){
    document.getElementById("m3").innerHTML="<font color='green'>Ok!</font>";
  } 
  else {
    document.getElementById("m3").innerHTML="<font color='red'>Campo incorreto</font>";
  } 
}
    
asked by anonymous 01.05.2018 / 01:35

1 answer

1

As you described in the question, the code below will serve you (see comments):

function validaRegistro(value){
   var padrao = /^\d{6}$/; // só aceita 6 dígitos à partir do início
   var valida = true; // flag para validar a soma
   if(value.match(padrao)){
      var nums = value.split('').map(Number); // crio uma array com os números
      var ultimo = nums.pop(); // pego e retiro o último número da array
      var soma = 0; // valor inicial da soma
      for(var vals of nums){ // loop para somar os 5 dígitos da array
         soma += vals;
      }

      if(soma > 10){
         valida = false; // se a soma for maior que 10, invalida
      }else if(soma == 10){
         var resultado = nums.join('')+"0"; // se for igual a 10, junto a array e concateno 0
      }else{
         var resultado = nums.join('')+ultimo; // se for menor que 10, junto a array e concateno com o último dígito
      }
   }else{
      valida = false; // não atendeu ao regex
   }

   if(valida){ // se os requisitos foram atendidos
      document.getElementById("m3").innerHTML="<font color='green'>Ok!</font>";
      console.log(resultado);
   }else{ // requisitos não foram atendidos
      document.getElementById("m3").innerHTML="<font color='red'>Campo incorreto</font>";
   }
}
Número de Registro:<br>
<input type="text" name="registro" onblur="validaRegistro(this.value)">
<div id="m3"></div>
    
01.05.2018 / 02:38