Есть такой редактор -
Summernote, он поддерживает функцию автодополнения слова. Например, вводишь две буквы Ja, под ними появляется pop-up меню с возможными дополнениями слова: Java, Jason, ... и тому подобное. Слова для автодополнения подгружаются из словаря, который нужно задать до инициализации сущности Summernote. Вот простой пример с сайта разработчика:
$(".hint2basic").summernote({
height: 100,
toolbar: false,
placeholder: 'type with apple, orange, watermelon and lemon',
hint: {
words: ['apple', 'orange', 'watermelon', 'lemon'],
match: /\b(\w{1,})$/,
search: function (keyword, callback) {
callback($.grep(this.words, function (item) {
return item.indexOf(keyword) === 0;
}));
}
}
});
(".hint2basic") ищет на странице блок div с классом hint2basic, затем создает сущность summernote.
Здесь можно посмотреть пример, как это работает.
Вопрос же следующий: как можно передавать слова в словарь и после инициализации Summernote? То есть, например, по событию onChange для контента внутри Summernote мне от сервера приходит некоторый массив ["car", "house", "bag"]. И как можно этот словарь подставить вместо ['apple', 'orange', 'watermelon', 'lemon'] без перезагрузки страницы/редактора? То есть, как сделать так, чтобы редактор подхватывал то, что приходит от сервера?
Пробовал по событию onChange вызывать $('#editor').summernote('destroy'); - уничтожает текущую сущность Summernote, затем инициализировал новую с уже полученным словарем, но в данном случае проблема в том, что скрипт при каждом изменении контента внутри Summernote уничтожает его и создает новый, что делает работу с редактором невозможной.
Если же имеется какой-то более удобный редактор, поддерживающий, как минимум, функционал Summernote и упрощающий реализацию того, что мне нужно — с удовольствием ознакомлюсь с предложениями.