4

選択範囲のテキストの開始と終了を見つけようとしています。ということで、以下の文章で「Hello, world! what a fine day!」の中から「world! what a fine」を選んだら、開始座標は7、終了座標は24となるはずです。ゼロベースのインデックス。

これはどのように達成できますか?

<input>編集:または<textarea>要素の中にないテキストの選択を探しています。

編集:使用するソリューションを無効にすることを決定しました<textarea>s

4

3 に答える 3

2

これは可能ですが、HTML コンテンツの場合は少し複雑です (または要素contenteditable内のテキストとは対照的です)。簡単なクロスブラウザーの実装を次に示します。<input><textarea>

https://stackoverflow.com/a/4812022/96100

于 2011-12-19T11:06:26.440 に答える
2

私はこれを使用します:

/* Returns 3 strings, the part before the selection, the part after the selection and the selected part */
function getSelected()
{
  var u     = editor.val();
  var start = editor.get(0).selectionStart;
  var end   = editor.get(0).selectionEnd;

  return [u.substring(0, start), u.substring(end), u.substring(start, end)];
}

エディターがどこにある$("#editor")か、またはテキストエリア/入力フィールドが持つ可能性のあるIDが何であれ。

使用法:

var select = getSelected()
editor.val(select[0] + '<h1>'+ select[2] + '</h1>' + select[1]);

選択したテキストを H1 で折り返します。何も選択されていない場合は、空の H1 が追加されるだけですが、必要に応じてチェックと機能を追加できます。

** すべてのブラウザーでテストされているわけではありませんが、Chrome では動作します **

于 2011-12-18T04:41:18.543 に答える
0

しかし、私はあなたの問題などを狙ったjQueryプラグインを知っています - https://github.com/localhost/jquery-fieldselection

于 2011-12-17T08:50:37.567 に答える