Come posso ottenere una parola in textarrea in base alla sua posizione attuale?Ottieni la parola corrente sulla posizione di accostamento
Ho provato qualcosa di simile, tuttavia questo restituisce solo le parole prima lettera fino al carattere nella posizione di accento. Ad esempio:
se il cursore si trova tra fo e o restituisce fo
e non foo
come excpected.
Fo |
o bar non è uguale a bar foo. =>Fo
si aspetta Foo
La barra di sicurezza non è uguale a |
al bar foo. =>equ
si aspetta equal
.
Ecco che cosa ho fatto finora:
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/
Nizza! Grazie mille ... – yckart
Questo è fantastico funziona anche per me. L'unico problema è che l'ultima parola nel testo taglierà l'ultimo carattere se non c'è spazio alla fine del testo ... Ad esempio, "Questo è il testo della cupola" restituire 'tex' se il cursore è alla fine. E 'Questo è il testo della cupola' ritornerebbe correttamente 'testo'. Questo può essere risolto? –
Aggiunta una versione che gestisce l'ultima parola in textarea e rimuove la puntata finale http://stackoverflow.com/a/40338359/295783 – mplungjan