Задать вопрос
@sadboy
Верстальщик

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

привет можете помочь скриптом? нужно что бы при определенной длине строки показывался определенные текст в тултипе https://jsfiddle.net/zapaza10/hhxc8znh/

я что-то не так сделал видно, и у меня вообще не отображается текст
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Косяки:

  • разметка текстового поля - забыты закрывающие кавычки у атрибута type
  • синтаксическая ошибка: знак минус вместо присваивания
  • синтаксическая ошибка: забыли закрывающую скобку в вызове addEventListener
  • забыли подключить jquery
  • неправильно подключаете обработчик события keyup - пытаетесь вызывать нативный метод у jquery объекта
  • обрабатываемое событие неправильное - должно быть input, а не keyup (потому что ввод с клавиатуры не является единственным способом отредактировать содержимое текстового поля)
  • опечатка в имени атрибута: в js у вас - data_toll, в css - data-toll (очевидно, это должен быть data-атрибут, т.е., символ подчёркивания - долой)


Исправляем:

const getTooltip = val =>
  val <  3 ? 'Вводите только римские цифры XVI' :
  val <  5 ? 'Смените раскладку языка на русский и продолжите ввод данных' :
  val < 11 ? 'Вводите обычные цифры' :
             'ЖОПА';

// вот jquery
$('.form-control').on('input', ({ target: { value: { length } } }) => {
  $('.birth_certificate').attr('data-toll', getTooltip(length));
});

// а вот jquery катится к чёрту
document.querySelector('.form-control').addEventListener('input', function(e) {
  this.dataset.toll = getTooltip(e.target.value.length);
}.bind(document.querySelector('.birth_certificate')));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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