这几天有个工作需求,就是在富文本输入区域(kindeditor)可以有@功能,能够容易提示用户名的(像在qq群组@人一样)。在网上找了一个叫bootstrap-suggest的插件,却不能满足我的需求,于是我决定在该插件上改良,主要是下面几点:
1. @内容的输入,能够匹配多个属性值。
2. 选中列表值后,是成块插入kindeditor的(方便删除,也利于区分文本)。
3. 修正输入偶数关键字@功能失效问题。
前言
在一开始,我用bootstrap-suggest(https://github.com/lodev09/bootstrap-suggest),这个插件能够实现以下效果。
但是我发觉有几个问题:
1. 只能单一匹配(可能存在需要匹配拼音或中文)。
2. 偶数位的@功能会失效。
3. 选取值后,只是简单文本(没有qq一样那种成块效果)。
jquery-kindeditor-suggest
由于我不想重复造轮子,于是决定在上面插件做调整,以满足我的需求,有几个关键地方需说明。
1. startOffset取值错误问题。
如果使用了KindEditor的insertHTML,会导致下一次startOffset取值出错。原插件在获取光标位置(top,left)时,会需要插入一个span去获取,在获取完后删除,但是这时候下一次editor.cmd.range.startOffset;就出错。
于是我修改了插入的方式:
var doc = editor.cmd.range.doc, range = editor.cmd.range, frag = doc.createDocumentFragment(); KindEditor('@<span id="input-textarea-caret-position-mirror-span">.</span>' , doc).each(function() { frag.appendChild(this); }); range.deleteContents(); range.insertNode(frag); range.collapse(false);
PS:在170行。
2. 替换选择值
将@后面的输入内容删除(包含@),然后插入一个完整的标签(选择值),还要保证光标位置正确。
var dType = !!el.cmd.range.startContainer.data "data" : "innerHTML"; //这个取值最关键 var sVal = el.cmd.range.startContainer[dType]; var lAt = sVal.lastIndexOf(this.key); el.cmd.range.startContainer[dType] = sVal.substring(0, lAt) ; el.insertHtml("<span contenteditable='false'>"+this.key+item.value+' </span>' +'<span id="input-textarea-caret-position-mirror-span">.</span>'); var span = el.edit.doc .getElementById('input-textarea-caret-position-mirror-span'); var range = el.edit.doc.createRange(); range.selectNodeContents(span); range.collapse(false); var sel = el.edit.win.getSelection(); sel.removeAllRanges(); sel.addRange(range); //hack:修正下一次startOffset span.parentNode.removeChild(span);
PS:在442行。
修改后效果
内容是富文本输入区域,插入的成块文本。
总结
虽然是基于他人的插件,但我在修复问题上也花费了很多心思,之前一直发现没有精确针对kindeditord @功能的插件,所以我就自己弄了下。
我把源代码放在Github上了,有需要的可去下:https://github.com/codingforme/jquery-kindeditor-suggest
以上所述是小编给大家介绍的jQuery弹出下拉列表插件(实现kindeditor的@功能),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 群星《错位 影视原声带》[320K/MP3][63.65MB]
- 中国音乐地图之听见四川彝族民间歌曲乐曲集2020[WAV+分轨]
- 姚璎格《姚璎格的歌(24K纯金CD)》[正版原抓WAV+CUE]
- 高垣彩陽《melodia4》【Hi-Res】24bit-96kHz【flac】
- 王菀之《The Missing Something》[320K/MP3][67.2MB]
- 赵翊帆《LUNARFACE》[320K/MP3][88.81MB]
- 赵翊帆《LUNARFACE》[FLAC/分轨][464.62MB]
- 小野丽莎《OnoLisabest1997-2001》日本醇选辑[正版原抓WAV+CUE]
- 天籁之音NanaMouskouri《AtHerVeryBest》K2HD[正版原抓WAV+CUE]
- 古典吉他《鲁特琴-BachInspirations巴赫灵感》ThibautGarcia[24Bit/96kHz]
- 刘纬武《睡眠音乐家 缓解疼痛 赫兹白噪音》[320K/MP3][217.2MB]
- 刘纬武《睡眠音乐家 缓解疼痛 赫兹白噪音》[FLAC/分轨][870.69MB]
- 群星1998 《宝丽金最佳电视主题曲》香港首版[WAV+CUE][1.2G]
- 群星1990《群星会·金曲重现》新加坡版[WAV+CUE][1.1G]
- 张惠妹2003《勇敢》[WAV+CUE][1.1G]