`измените код так чтобы после того как я написал номер и захотел его стереть нажав backspace каретка доходя до ‘) ‘ не останавливалась а перепрыгивала через скобку и стирала еще 2 цифры внутри скобок ну или что-то в этом духе
const phoneInput = document.getElementById('phoneInput');
phoneInput.addEventListener('click', function() {
if (phoneInput.value === '') {
phoneInput.value = '+375 (__) ___-__-__';
setCaretPosition(phoneInput, 7); // Позиция между скобками
}
});
phoneInput.addEventListener('input', function (e) {
const cursorPosition = phoneInput.selectionStart;
let rawValue = e.target.value.replace(/D/g, '');
// Удаляем префикс "375" если он есть
if (rawValue.startsWith('375')) {
rawValue = rawValue.substring(3);
}
// Создаем форматированный текст
let formattedValue = '+375 (';
// Определяем, что было введено внутри скобок
let insideBrackets = rawValue.substring(0, Math.min(2, rawValue.length));
formattedValue += insideBrackets.padEnd(2, '_'); // Заменяем неполные символы на "_"
formattedValue += ') ';
// Добавляем первую часть номера
if (rawValue.length >= 3) {
formattedValue += rawValue.substring(2, 5);
} else {
formattedValue += '';
}
// Добавляем дефис и вторую часть номера
if (rawValue.length >= 6) {
formattedValue += '-' + rawValue.substring(5, 7);
} else {
formattedValue += '';
}
// Добавляем второй дефис и третью часть номера
if (rawValue.length >= 8) {
formattedValue += '-' + rawValue.substring(7, 9);
} else {
formattedValue += '';
}
// Устанавливаем форматированное значение
phoneInput.value = formattedValue;
// Корректируем позицию каретки
setCaretPosition(phoneInput, getCaretPosition(cursorPosition, insideBrackets.length));
});
phoneInput.addEventListener('keydown', function (e) {
const cursorPosition = phoneInput.selectionStart;
const key = e.key;
if (key === 'Backspace' && cursorPosition === 8) {
e.preventDefault(); // Предотвращаем стандартное поведение Backspace
// Устанавливаем каретку после скобки
setCaretPosition(phoneInput, 7);
}
});
function setCaretPosition(elem, pos) {
setTimeout(() => {
elem.setSelectionRange(pos, pos);
}, 0);
}
function getCaretPosition(cursorPosition, insideLength) {
if (cursorPosition <= 7) {
return 7; // Позиция между скобками
} else if (cursorPosition <= 10) {
return 8 + insideLength; // Позиция внутри скобок
} else if (cursorPosition <= 14) {
return cursorPosition + 2; // После первой части номера
} else if (cursorPosition <= 17) {
return cursorPosition + 3; // После второй части номера
} else {
return cursorPosition + 4; // После третьей части номера
}`your text`
}
вот мой код и я хочу чтобы при нажатии на мой input появлялись не стераемые+375 (каретка) и там где написана каретка она должна появляться`
New contributor
Ampit is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.