Ho capito ciò che intendi per limitare a 8 caratteri. Non ho idea di come funzioni quel data-mask (che nel tuo codice è commentato). Ho fatto comunque varie prove per cercare di capire come può essere impostato il tutto. Deduco che in quell'input andranno inserite solo cifre numeriche e chiaramente questo controllo non c'è (immagino che sia possibile farlo con quel data-mask ma non entro in merito al discorso).
Personalmente sono arrivato a questa conclusione:
codice:
<!DOCTYPE HTML>
<html>
<head>
<title>Esempio</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(function(){
$('#numero').on('input', function(){
var val = +this.value.replace(/[^\d]*/g,''); // Ottengo il valore numerico rimuovendo qualsiasi altro eventuale carattere
if (val.toString().length > 8) val = $(this).data('val') || 0; // Limito la lunghezza ad 8 caratteri, se maggiore allora uso il vecchio valore inserito in precedenza
$(this).data('val', val); // Memorizzo il nuovo valore numerico
this.value = String("00000000" + val).slice(-8); // Zero padding
});
});
</script>
<style>
</style>
</head>
<body>
<input type="text" id="numero" placeholder="00000000" required >
</body>
</html>
Ho usato l'evento input che copre al meglio tutte le varie interazioni che si possono fare per inserire un qualche valore dentro un campo input (ad esempio anche con un copia-incolla). Preciso però che questo evento non è supportato da versioni precedenti a IE9. Il resto dello script è commentato. Fai qualche prova e vedi se per te può andare bene.
Buon proseguimento.