我有一个 contenteditable div,它包含其他标签,而不仅仅是纯文本。只允许输入一个@。如果存在@和脱字符号之间的字符范围,如何获取该范围?
哈,这比我想象的要容易!基于这个容易被忽视的问题:Div "contenteditable" :获取和删除插入符号之前的单词 https://stackoverflow.com/questions/24890130/div-contenteditable-get-and-delete-word-preceding-caret我分叉了它的 jsfiddle,这是我的按预期工作:
http://jsfiddle.net/52m2thu2/1/ http://jsfiddle.net/52m2thu2/1/
function getWordBetweenAtAndCaret(containerEl) {
var preceding = "",
sel,
range,
precedingRange;
if (window.getSelection) {
sel = window.getSelection();
if (sel.rangeCount > 0) {
range = sel.getRangeAt(0).cloneRange();
range.collapse(true);
range.setStart(containerEl, 0);
preceding = range.toString();
}
} else if ((sel = document.selection) && sel.type != "Control") {
range = sel.createRange();
precedingRange = range.duplicate();
precedingRange.moveToElementText(containerEl);
precedingRange.setEndPoint("EndToStart", range);
preceding = precedingRange.text;
}
var lastWord = preceding.match(/@(.+)$/i);
if (lastWord) {
return lastWord;
} else {
return false;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)