選択範囲のテキストの開始と終了を見つけようとしています。ということで、以下の文章で「Hello, world! what a fine day!」の中から「world! what a fine」を選んだら、開始座標は7、終了座標は24となるはずです。ゼロベースのインデックス。
これはどのように達成できますか?
<input>
編集:または<textarea>
要素の中にないテキストの選択を探しています。
編集:使用するソリューションを無効にすることを決定しました<textarea>s
選択範囲のテキストの開始と終了を見つけようとしています。ということで、以下の文章で「Hello, world! what a fine day!」の中から「world! what a fine」を選んだら、開始座標は7、終了座標は24となるはずです。ゼロベースのインデックス。
これはどのように達成できますか?
<input>
編集:または<textarea>
要素の中にないテキストの選択を探しています。
編集:使用するソリューションを無効にすることを決定しました<textarea>s
これは可能ですが、HTML コンテンツの場合は少し複雑です (または要素contenteditable
内のテキストとは対照的です)。簡単なクロスブラウザーの実装を次に示します。<input>
<textarea>
私はこれを使用します:
/* 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 では動作します **
しかし、私はあなたの問題などを狙ったjQueryプラグインを知っています - https://github.com/localhost/jquery-fieldselection