TinyMCE编辑器自动补全:取消@触发,实现首字母触发
解决TinyMCE Autocompleter输入首字母触发自动补全的问题
要实现输入首字母即显示自动建议,只需调整Autocompleter的配置逻辑,核心是移除触发字符限制并设置最小触发字符数:
- 移除触发字符配置:删除原配置中的
trigger: '@'字段,不再指定特定触发字符,让组件监听所有输入内容。 - 设置最小触发字符数:添加
minChars: 1,确保用户输入第一个字符时就触发匹配逻辑。 - 调整匹配逻辑:在
fetch方法中,基于用户输入的完整内容(即首字母及后续字符)筛选候选建议。
示例代码如下:
tinymce.init({ // 编辑器基础配置 plugins: 'autocomplete', setup: function(editor) { editor.ui.registry.addAutocompleter('custom-autocompleter', { // 移除trigger字段,取消特定字符触发限制 minChars: 1, // 输入1个字符即触发补全 fetch: function(searchPattern) { // 示例候选列表,可替换为业务数据源 const candidateList = ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry']; return new Promise(resolve => { // 基于输入内容的首字母(忽略大小写)筛选匹配项 const matchedItems = candidateList.filter(item => item.toLowerCase().startsWith(searchPattern.toLowerCase()) ); // 转换为Autocompleter可识别的格式 resolve(matchedItems.map(item => ({ type: 'autocompleteitem', text: item, value: item }))); }); }, onAction: function(api, range, value) { // 插入选中的补全内容 editor.insertContent(value); api.hide(); } }); } });
关键说明
- 移除
trigger后,Autocompleter会实时响应编辑器的输入事件,不再依赖特定字符触发。 minChars: 1控制触发补全的最小输入长度,确保首字母输入后立即显示建议。fetch方法中的searchPattern参数即为用户当前输入的内容,通过startsWith实现首字母匹配逻辑,可根据业务需求调整匹配规则(如包含匹配等)。
内容的提问来源于stack exchange,提问作者Evanto Hosts
相关产品推荐
相关产品推荐

