如何通过当前的插入位置在textarrea中找到一个单词?
我尝试了类似这样的东西,但这只返回第一个字母到达插入位置的字符.例如:
如果光标位于fo和o之间,则返回fo而不是foo.
Fo | o bar不等于bar foo. => Fo期待Foo
Foo bar与bar foo不相同. => equ期望平等.
这是我到目前为止所做的:
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").keyup(function () { var caret = getCaretPosition(this); var result = /\S+$/.exec(this.value.slice(0,caret.end)); var lastWord = result ? result[0] : null; alert(lastWord); });
解决方法
尝试将代码中的这一行更改为:
var result = /\S+$/.exec(this.value.slice(0,this.value.indexOf(' ',caret.end)));