How to avoid typing repeat numbers with angle

1

How do I not enter repeat numbers in validation? In my current validation, I can leave the field fields mandatory to enable the save button and in this input TaskSelected.order to work, I only validate the button by typing numbers, but can I add this condition that I can not repeat numbers in this list in the validation?

//validação
$scope.exibeValidacaoTarefa = function() {
  for (var tarefa in $scope.tarefasSelecionadas) {
    if ($scope.tarefasSelecionadas[tarefa].ordemTarefa == null ||
      $scope.tarefasSelecionadas[tarefa].ordemTarefa == "") {
      return true;
    }
  }
  return $scope.atividadeInput == null ||
    $scope.atividadeInput == "" ||
    $scope.atividadeInput.descAtividade == null ||
    $scope.atividadeInput.descAtividade == "" ||
    $scope.atividadeInput.solicitante == null ||
    $scope.atividadeInput.solicitante == "" ||
    $scope.tarefasSelecionadas == null;
}

$scope.exibeValidacaoEditarTarefa = function() {
    for (var tarefa in $scope.tarefasSelecionadas) {
      if ($scope.tarefasSelecionadas[tarefa].ordemTarefa == null ||
        $scope.tarefasSelecionadas[tarefa].ordemTarefa == "") {
        return true;
      }
    }


    //submit
    $scope.adicionarAtividade = function(atividadeInput) {
      var codigo = "";
      atividadesInput.codigoAtividade = codigo;
      atividadesInput.descAtividade = $scope.atividadeInput.descAtividade;
      atividadesInput.solicitante = $scope.atividadeInput.solicitante;

      atividadesInput.matrizJson = [];
      for (var int = 0; int < $scope.tarefasSelecionadas.length; int++) {
        var gride = {};
        gride.codTarefa = $scope.tarefasSelecionadas[int].codigo;
        gride.ordemTarefa = $scope.tarefasSelecionadas[int].ordemTarefa;
        atividadesInput.matrizJson.push(gride)
      }

      atividadesAPI.saveAtividade(atividadesInput).success(function(data) {
        $(document).ready(function() {
          $("#ModalAdicionaAtividadeSucesso").modal('show');
        });
        $scope.atividadeInput = {};
        $scope.tarefasSelecionadas = {};
        carregarTarefas();
        carregarAtividades();
      }).error(function(data, status) {
        $(document).ready(function() {
          $("#ModalAdicionaAtividadeErro").modal('show');
        });
        $scope.message = "Aconteceu um problema: " + data;
      });


    };
<tr ng-repeat="tarefaSelecionada in tarefasSelecionadas">
  <td scope="row">
    <input type="number" class="form-control" name="numbers" ng-model="tarefaSelecionada.ordemTarefa" ng-required="true">
  </td>
</tr>

<button type="button" class="btn btn-primary btn-md" ng-click="adicionarAtividade(atividadeInput)" data-dismiss="modal" id="btn-cadastra-atividade" onclick="atualiza()" ng-disabled="exibeValidacaoTarefa()">
  <span class="glyphicon glyphicon-ok-sign"></span> Salvar
</button>
    
asked by anonymous 03.08.2017 / 16:08

1 answer

1

Here is a small function to check if a repeated letter / number was typed, adapt it according to your need.

    var arr = [];
    function verificaDigitios(e) {
        var keynum;

        if (window.event) { // IE                    
            keynum = e.keyCode;
        } else if (e.which) { // Netscape/Firefox/Opera                   
            keynum = e.which;
        }
        var digito = String.fromCharCode(keynum);
        if (arr.includes(digito)) {
            alert("NÃO É PERMITIDO DIGITOS REPETIDOS!")
            return false;
        } else {
            arr.push(digito)
        }
    }
<input type="text" onkeypress="return verificaDigitios(event)" />

Code to check if the value has already been entered in another field.

  

The code below checks whether the value has already been entered in another input,    important to report an id for each field.

$(document).on("change", "input[type='text']", function() {
  var campoAtual = $(this);
    $("input[type='text']").each(function(){
      var input = $(this);
      if (campoAtual.attr('id') !== input.attr('id') && campoAtual.val() !== "") {
        if (campoAtual.val() === input.val()) {
          alert("NÃO PODE CONTER NÚMERO IGUAL, INFORME OUTRO.");
          campoAtual.val('');
          campoAtual.focus();
          return false;
        }
      }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><formid="form1">
    <p>
      #1 - Informe um número:<br />
      <input type="text" id="1" value="1" />
    </p>
    <p>
      #2 - Informe um número:<br />
      <input type="text" id="2" value="2" />
    </p>
    <p>
      #3 - Informe um número:<br />
      <input type="text" id="3" value="3" />
    </p>
    <p>
      #4 - Informe um número:<br />
      <input type="text" id="4" value="4" />
    </p>
    <p>
      #5 - Informe um número:<br />
      <input type="text" id="5" value="5" />
    </p>
  </form>
    
03.08.2017 / 19:14