成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? jQuery彈出下拉列表插件(實現kindeditor的@功能)
全站頭部文字 我要出現在這里
jQuery彈出下拉列表插件(實現kindeditor的@功能) 645 2024-02-21   

這幾天有個工作需求,就是在富文本輸入區域(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的@功能),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對綠夏網網站的支持!



主站蜘蛛池模板: 放烟花的视频| 火柴人游戏机怎么做| 白皮书电影| 迷案1937电视剧剧情介绍| 林冲夜奔| 南海风云捕鱼| 搜狐手机网首页新闻| 情事:秘密情事| 战狼15电影在线观看| 恶女台剧| 九号所有车型图片| 好像也没那么热血沸腾电影免费观看| 李赫洙| 3d成人国产同人动漫焰灵姬| 罗斯福游戏| 不回微信判30年图片| 杨幂一级毛片在线播放| fate动漫免费观看| 冬日行动电影免费观看| 洛可希佛帝| 谭天| 预备党员接收大会入党介绍人发言| 355 电影| 单招在线咨询| 黑暗时刻| 喜欢小红帽的原因怎么写| 雷恪生个人资料简介| 龙的心电影完整版国语| 钟易轩| 电影痴人之爱| a级免费电影| tim roth| 喜羊羊简谱| 贾冰又出新的喜剧电影| 猛鬼追魂| 提升自我| 安志杰电影全集大全| 柯哀分析文| 员工的秘密| 科洛弗| 贝蒂的启蒙|

!!!站長長期在線接!!!

網站、小程序:定制開發/二次開發/仿制開發等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103