获取有关插入位置当前词(Get current word on caret position)

2019-08-17 23:08发布

我如何通过当前光标处获得textarrea一个字?

我想这样的事情,但是这只是返回在高达插入位置的字符单词第一个字母。 例如:

如果光标fo之间和它返回fo和不foo作为excpected。

| Ö栏是不等于巴FOO。 => Fo预计Foo

美孚栏没有EQU | 人吧FOO。 => equ期望equal

这是我到目前为止已经完成:

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);
});

http://fiddle.jshell.net/gANLv/

Answer 1:

试着改变你的代码这一行这样的:

 var result = /\S+$/.exec(this.value.slice(0, this.value.indexOf(' ',caret.end)));


文章来源: Get current word on caret position