如何使用Javascript将光标移动到textarea中的下一个或上一个单词?我正在尝试在HTML textarea中复制Emacs命令“前进一个单词”和“后退一个单词”。
我可以使用rangyinputs获取当前的插入符/光标位置,但是我还不确定如何在不使用可能在很长的文本片段上慢的各种分割的情况下有效地移动到下一个单词。 / p>
答案 0 :(得分:0)
见fiddle。我使用jQuery Set Cursor Position in Text Area中的函数来改变光标的位置。
function nextWord(input) {
var words = input.value.split(" "),
index = 0;
for (var i in words) {
var word = words[i];
if (index+word.length >= input.selectionStart) {
setCaretToPos(input, index+word.length+1);
break;
}
index += word.length+1;
}
}
function previousWord(input) {
var words = input.value.split(" ").reverse(),
index = input.value.length;
for (var i in words) {
var word = words[i];
if (index+1 <= input.selectionStart) {
setCaretToPos(input, index-word.length);
break;
}
index -= word.length+1;
}
}