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

Как не выводить пустое значение input?

Есть некоторая проблема. Если ничего не добавлять в input, то новый li не будет создан (так и задумывалось). Но если добавить один пробел или множество пробелов, то li будет создан пустым (пустые li не должны быть созданы, даже если в них содержится символ пробела).
Код: https://codepen.io/thekeksir/pen/QevYEp
  • Вопрос задан
  • 569 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 2
uashkki
@uashkki
Frontend Developer
0xD34F
@0xD34F Куратор тега JavaScript
Обрезайте пробельные символы по краям при получении значения из input'а - так, если ничего больше нет, строка получится пустой и проверка пройдена не будет.

Ну и ещё повторяющийся код неплохо было бы вынести в отдельный метод, и избавиться от повторного поиска элементов:

$('button').on('click', addTodo);

const $input = $('.form-control').keypress(e => {
  if (e.key === 'Enter') {
    addTodo();
  }
});

const $ul = $('ul')
  .on('click', '.remove', function() { 
    const $li = $(this).closest('li').fadeOut(500, () => $li.remove());
  })
  .on('click', '.checkbox', function() {
    $(this).closest('li').find('.text').toggleClass('line').fadeIn(100);
  })
  .on('mouseenter mouseout', '.text', function({ type }) {
    $(this).attr('contenteditable', () => type === 'mouseenter' ? true : null);
  });

function addTodo() {
  const text = $input.val().trim();
  if (text) {
    $input.val('');
    $ul.append(`
      <li>
        <input type="checkbox" class="checkbox">
        <span class="text">${text}</span>
        <span class="remove">&#10008;</span>
      </li>
    `);
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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