我有一个包含以下内容的文本区域:
<textarea id="text">
Hello! Who am I? This is the third sentence. This, is another sentence.
</textarea>
因为它是一个文本区域,所以它可以被聚焦。我试图找到一种方法:
将 textarea 中的所有句子分隔成一个 javascript 数组。我尝试了一种$('#text').val().split()方法,但在我的示例中不止一个句子分隔符。
我还需要知道光标当前位于哪个句子中。
为什么,你可能会问?当用户更改其内容时,我需要处理(使用按字符收费的付费 API)句子。如果我只对第 2 句做一点改动,为什么要提交第 1、3、4 句?只提交第二个当然要便宜得多。
正如我之前所说,如果人们只使用点来分隔句子,.split() 方法将是完美的,但还有其他字符也应该考虑(!?。)——关于第二点,我找到了一个函数查找脱字符位置:
function doGetCaretPosition (ctrl) {
var CaretPos = 0;
if (document.selection) {
ctrl.focus ();
var Sel = document.selection.createRange ();
Sel.moveStart ('character', -ctrl.value.length);
CaretPos = Sel.text.length;
} else if (ctrl.selectionStart || ctrl.selectionStart == '0') {
CaretPos = ctrl.selectionStart;
}
return (CaretPos);
}
问题是,这个位置如何帮助我找到句号?欢迎所有想法!