Задать вопрос
@olya_097

Не становятся первые буквы ФИО большими по потере фокуса, как исправить?

Дан инпут. В него вводится ФИО через пробел. ФИО вводится с маленькой буквы. Сделайте так, чтобы по потери фокуса инпутом, введенные фамилия, имя и отчество автоматически стали записанными с большой буквы (в том же инпуте).

https://jsfiddle.net/k098p3yq/2/

Почему код не работает? Что не так?
  • Вопрос задан
  • 546 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
  • Обрабатываете не то событие - должно быть blur, а не focus
  • Пытаетесь вызвать toUpperCase не у строки, а у массива - забыто [0]
  • Возвращаете результат в никуда, вместо того, чтобы установить значение инпута


И вообще, всё это делается гораздо короче:

input.addEventListener('blur', function() {
  const value = this.value.trim();
  if (value) {
    this.value = value
      .split(/\s+/)
      .map(n => n[0].toUpperCase() + n.slice(1))
      .join(' ');
  }
});

// или

input.addEventListener('blur', ({ target: t }) => {
  t.value = t.value
    .trim()
    .replace(/\s+/g, ' ')
    .replace(/(^|\s)\S/g, m => m.toUpperCase());
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dimoff66
Кратко о себе: Я есть
Неверно указано событие в addEventListener
Ответ написан
Ваш ответ на вопрос

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

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