在@和textarea当前位置之间出现
取决于textarea
当前的写作位置,我想在@
之后得到这个词。 更确切地说:
-
如果当前光标位置在
@
任何字母上,则答案应为 -
如果当前光标位置在任何其他单词上,则答案应为空
''
我正在努力解决这个问题,但没有找到任何“好”的方法来做到这一点。
$('#hey').on('click', function() { alert(); });
CLICK ME
更新了假定重复的代码获取插入位置的当前单词 ,结果如下
function getCaretPosition(ctrl) { var start, end; if (ctrl.setSelectionRange) { start = ctrl.selectionStart; end = ctrl.selectionEnd; } else if (document.selection && document.selection.createRange) { var range = document.selection.createRange(); start = 0 - range.duplicate().moveStart('character', -100000); end = start + range.text.length; } return { start: start, end: end } } $("textarea").on("click keyup", function () { var caret = getCaretPosition(this); var endPos = this.value.indexOf(' ',caret.end); if (endPos ==-1) endPos = this.value.length; var result = /\S+$/.exec(this.value.slice(0, endPos)); var lastWord = result ? result[0] : null; if (lastWord) lastWord = lastWord.replace(/['";:,.\/?\\-]$/, ''); // remove punctuation $("#atID").html((lastWord && lastWord.indexOf("@") == 0)?lastWord:""); });