このコンテンツのテキストエリアがあります:
<textarea id="text">
Hello! Who am I? This is the third sentence. This, is another sentence.
</textarea>
テキストエリアなのでフォーカス可能です。私は次の方法を見つけようとしています:
テキストエリア内のすべての文を JavaScript 配列に分割します。私は$('#text').val().split()アプローチを試みましたが、私の例には複数の文区切りがあります。
また、現在カーソルが置かれている文を知る必要もあります。
なぜ、あなたは尋ねるかもしれませんか?ユーザーがコンテンツを変更したときに、(文字ごとに課金される有料 API を使用して) 文を処理する必要があります。2 番目のセンテンスを少し変更しただけで、なぜ 1 番目、3 番目、4 番目のセンテンスを提出する必要があるのですか? もちろん、2 番目のものだけを提出する方がはるかに安価です。
前に言ったように、.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);
}
問題は、文番号を見つけるのに位置がどのように役立つかということです。すべてのアイデアを歓迎します!