在@和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:""); });