Комментарии, которые просят вас немного лучше объяснить свой код, скорее всего, связаны с тем, что в вашей функции форматирования есть много избыточностей, которые не имеют смысла для вашей конкретной c проблемы. (Возможно, это скопированный код, который вы пытались настроить в соответствии с вашими потребностями)
Если вы хотите ввести строку формата XXXXXXXXXX
и автоматически отформатировать ее до XXXXX-XXXXX-XX
, вам нужно будет ограничить число символов до 10
и вставлять -
после каждого 4-го символа.
Также подумайте об ограничении символов, разрешенных в вашей строке. например, только цифры или только цифры + A-Za-z в зависимости от ваших потребностей, если вы хотите предотвратить использование нежелательных символов, таких как ,
или @
function format( val ) {
let num = val.replace(/\-/g, '').split('');
let output = "";
let numPos = 1;
let maxChars = 10;
for(var i = 0; i < num.length && i < maxChars; i++) {
output += num[i];
if(numPos%4 == 0 && i < (num.length - 1)) {
output += "-";
}
numPos++;
}
return output;
}
$('input').on('input', function() {
$(this).val( format( $(this).val() ) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" />