Q:

Contar caracteres de um input ignorando o maskedinput

Tenho um script pra avançar o cursor para o próximo campo de um formulário quando o campo atual atinge o seu limite de caracteres(fonte).
Quando eu tentei colocar o maskedinput deu problema, pois a mascara conta como caracter e ele já pula pro próximo campo quando eu digito o primeiro número. Como resolver?
Tentei dessa forma, porém sem sucesso.

A:

Você deve utilizar o helper complete do plugin masked input, esse helper lhe permite executar uma função quando a mascara for preenchida devidamente, segue uma solução:

$("#cep").mask(
  "99999-999", {
    completed: function() {
      focusNext($(this))
    }
  });

$("#fax").mask("(99) 9999-9999");

function focusNext(el) {
  $(':input:eq(' + ($(':input').index(el) + 1) + ')').focus();
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.js"></script>
<label for="cep">CEP:</label>
<input type="text" id="cep" name="cep" data-length="9">

<label for="fax">Fax:</label>
<input type="tel" id="fax" name="fax">

