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

Javascript пытаюсь подсчитать много пробелов, как один — в textarea, но не получается. Почему так?

Здравствуйте. Почему скрипт работает не так, как я ожидаю? Попробуйте написать один символ, потом много пробелов и еще один символ. Пробелы зачтутся ВСЕ. А мне нужно, чтобы зачелся только один.
https://jsfiddle.net/49pemc0x/
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
.replace('/\s\s+/g', ' ')

Неправильно определяете регулярное выражение - кавычки не нужны.
Нет необходимости дублировать \s.
Есть иные способы помимо replace избавиться от повторяющихся пробелов.

document.querySelector('#text').addEventListener('input', e => {
  const value = e.target.value.trim();
  const output = document.querySelector('#output');

  output.textContent = value.replace(/\s+/g, ' ').length;
  // или
  output.innerText = value.split(/\s+/).join(' ').length;
  // или
  output.innerHTML = ''.concat(...(value.match(/\S+\s?/g) || [])).length;
});
Ответ написан
Комментировать
coderisimo
@coderisimo Куратор тега JavaScript
Да кавычки не нужны!
И куча лишнего кода )) Вот этого достаточно :
$('#text').on('input', function() {
  var string = $(this).val(); 
  string =  string.replace(/\s+/g, ' ').trim();
  $('#output').text(string.length);
});

зачем два раза обрабатывать строку?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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