Jak mogę uzyskać słowo w textarrea przez jego bieżącą pozycję opiekuna?Otrzymuj aktualne słowo na stanowisku opiekuńczym
Próbowałem czegoś takiego, ale to zwraca tylko pierwszą literę słowa do postaci w pozycji opiekuna. Np
jeżeli kursor znajduje się pomiędzy FO i O powraca fo
a nie foo
jak excpected.
Fo |
o pasek nie jest równy barowi foo. =>Fo
oczekuje, że Foo
Foo bar nie jest równy |
al to bar foo. =>equ
oczekuje equal
.
Oto co zrobiłem do tej pory:
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/
Nice! Dzięki dużo ... – yckart
To jest niesamowite działa również dla mnie. Jedynym problemem jest to, że ostatnie słowo w tekście obcina ostatni znak, jeśli na końcu tekstu nie ma spacji ... Na przykład 'To jest tekst kopuły' zwróci' tex', jeśli kursor znajduje się na końcu. I 'To jest tekst kopuły' zwróci poprawnie 'tekst'. Czy można to naprawić? –
Dodano wersję, która obsługuje ostatnie słowo w textarea i usuwa śledzący puntuation http://stackoverflow.com/a/40338359/295783 – mplungjan