У меня есть поле ввода длиной 14, в которое пользователь вводит значение. Когда пользователь вводит его, я хотел бы, чтобы пробел автоматически добавлялся после первых 2 символов, а затем после следующих 3 символов, а затем после следующих 3 символов. поэтому, если пользователь хочет ввести 12345678901, он должен быть отформатирован как 12 345 678 901.
Также, когда пользователь использует клавишу Backspace для очистки символов, пробел должен автоматически удаляться. Таким образом, в приведенном выше случае, когда курсор достигает 9 и пользователь нажимает клавишу Backspace, курсор должен переместиться на две позиции влево, очищая 9 и пробел перед ним.
Я попытался выполнить форматирование кредитной карты здесь Форматировать номер кредитной карты, но не мог понять, как это Готово. Код по ссылке выше
formatInput(event: any) {
var v = event.value.replace(/\s+/g, '').replace(/[^0-9]/gi, '')
var matches = v.match(/\d{4,16}/g);
var match = matches && matches[0] || ''
var parts = []
for (let i=0, len=match.length; i<len; i+=4) {
parts.push(match.substring(i, i+4))
}
if (parts.length) {
(<HTMLInputElement>document.getElementById("txtInput")).value =
parts.join(' ')
} else {
(<HTMLInputElement>document.getElementById("txtInput")).value
= event.value;
}
}
Приведенный выше код генерирует пробелы после каждых 4 цифр. Мое требование состоит в том, чтобы принимать любые символы и генерировать пробелы после первых 2 символов, затем после следующих 3 символов, а затем после следующих 3 символов. Пожалуйста, помогите мне с этим.