Quill-Mention问题:输入错误内容删除后提及下拉框无法重新打开
解决Quill-Mention无匹配时下拉框自动关闭的问题
问题分析
当前代码逻辑中,输入的searchTerm无匹配结果时,matches数组为空,调用renderList()后下拉框会自动关闭;删除错误输入内容时,只有完全删完触发onOpen()方法,下拉框才会重新显示,不符合需求。
解决方案
要实现「无匹配时不关闭下拉框、不显示任何建议」的效果,核心是修改**renderList()的逻辑**,移除空数组时关闭下拉框的判断,改为始终保留下拉框容器(空状态下仅清空内部内容)。
修改后的renderList()示例
function renderList(matches, searchTerm) { // 始终显示下拉框容器 const dropdown = document.querySelector('.ql-mention-list-container'); dropdown.style.display = 'block'; if (matches.length === 0) { // 无匹配时清空下拉框内容,不显示任何建议 dropdown.innerHTML = ''; return; } // 原有渲染匹配项的逻辑(根据实际业务调整) let listHtml = '<ul class="ql-mention-list">'; matches.forEach(entry => { listHtml += `<li class="ql-mention-list-item">${entry.value}</li>`; }); listHtml += '</ul>'; dropdown.innerHTML = listHtml; }
原source()逻辑无需修改
你的source()函数保持现有写法即可,即使matches为空,也会调用renderList(),此时修改后的renderList()会显示空的下拉框容器,不会触发关闭逻辑。
补充说明
如果renderList()是Quill-Mention的内置方法,你可以通过重写该方法或自定义模板的方式实现相同效果;核心思路始终是:无论是否有匹配结果,都维持下拉框容器的显示状态,仅在无匹配时清空内部内容。
内容的提问来源于stack exchange,提问作者Harshit Sharma
相关产品推荐
相关产品推荐

