Базовая реализация: вы можете прикрепить прослушиватель к нажатию клавиши на входе / некотором конкретном элементе (также может быть contenteditable
div), а затем вы можете проверить, нажал ли пользователь клавишу @
или нет.
let element = document.getElementById('#some-element');
element.addEventListener('keydown', function(event) {
const key = event.key;
if (key === '@') {
displaySuggestions();
}
});
Как только пользователь нажимает клавишу '@', вы можете вызывать функции displaySuggestions()
.Это будет простой компонент, который вы можете создать, и когда пользователь нажимает на любое значение в предложении, вы можете вставить это значение в позицию каретки.
См. Следующее: Вставьте текств текстовое поле в позиции курсора (Javascript)
Существует множество библиотек, которые прекрасно предоставляют эту функциональность, вы можете проверить их.
Обновление:
Я создал небольшой проект для CodeSandbox, и вы можете нажать на следующую ссылку, чтобы проверить его:
Это поможет с отправной точкой.
Я задокументировал код, объясняющий поведение и как это делается.В примере я использовал contenteditable div и определенно пример не оптимизирован для производительности, но многое можно сделать, чтобы улучшить его.
Я согласен, что есть множество ошибок, и все они могутразобраться, но через 20-30 минут это все, что я мог сделать.
Подводя итог : Вы можете черпать вдохновение из этого или продолжить редактирование этого илипридумайте лучшее ваше решение.У других людей могут быть отличные решения для этого, и я с нетерпением жду их.Пусть сила Javascript будет с вами.
Вот проект в действии: