@blogersha097

Как запретить удалять в инпуте первый символ?

допустим по умолчанию value="+"
суть - запретить его удалять
  • Вопрос задан
  • 213 просмотров
Пригласить эксперта
Ответы на вопрос 3
imko
@imko
Senior Scratch Developer
function foo() {
	if (input.value.length) input.value = "+"
}
input.addEventListenter('change', foo)
input.addEventListenter('input', foo)

Просто добавляй если его стерли. Так можно сразу все ситуации охватить, и замены и удаления, и работает проще некуда
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
// если первый символ не тот, прилепить его в начале
const keepPlus = event => {
  const symbol = '+';
  const {target} = event; // const target = event.target;

  if (target.value[0] !== symbol) {
    target.value = symbol + target.value;
  }
}

// проверять при любом изменении
document.querySelectorAll('input[type=text]')
  .forEach(el => el.addEventListener('input', keepPlus));
Здесь недостаток – помимо начального плюсика все прочие хотелки игнорируются. Например, юзер введёт ещё сотню плюсиков после первого, номер из всего 2 цифр и забудет указать код города. Юзеры они такие.

Вообще лучше посмотрите на input type="tel" и его атрибут pattern. Песочница.

а что UX?
С точки зрения пользовательского опыта, не факт, что непредсказуемый запрет на некие действия это хорошее решение. Может, лучше разрешить вводить как угодно, и потом уметь правильно это истолковать?
Если забыл код страны или города – взять из его геолокации; Ввёл одни цифры – молодец. Навставлял дефисов, точек и пробелов как разделителей, скобками выделил некоторые фрагменты – да и ладно – всё удалить, хранить только цифры. При выводе форматировать по-своему.
Ответ написан
Комментировать
dollar
@dollar
Делай добро и бросай его в воду.
Вынести его за пределы инпута.
Как вариант - наложить его сверху полупрозрачностью, а текст внутри инпута сместить правее с помощью css.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы