テキストボックスのカーソルで選択した部分に文字列、もしくはタグを挿入させたいのですが、
例えば
あいう|えお|でえおの部分をカーソルで選択して、何かボタンなどを押下すると自動で
あいう<s>えお<s>といった具合にタグを挿入してほしいのです。
ホームページで調べたところ、
テキストエリアで実現する方法が下のURLでみつけたのですが、
http://archiva.jp/web/javascript/getRange_in_tex …
テキストボックスで実行したいのですが、上の方法ではうまくいきません。
テキストボックスの場合どうすればいいのでしょうか?
どなたか回答よろしくお願いいたします。
また、上のホームページで使われているJavaScriptを載せます。
function surroundHTML(tag, obj) {
var target = document.getElementById(obj);
var pos = getAreaRange(target);
var val = target.value;
var range = val.slice(pos.start, pos.end);
var beforeNode = val.slice(0, pos.start);
var afterNode = val.slice(pos.end);
var insertNode;
if (range || pos.start != pos.end) {
insertNode = '<' + tag + '>' + range + '</' + tag + '>';
target.value = beforeNode + insertNode + afterNode;
}
else if (pos.start == pos.end) {
insertNode = '<' + tag + '>' + '</' + tag + '>';
target.value = beforeNode + insertNode + afterNode;
}
}
function getAreaRange(obj) {
var pos = new Object();
if (isIE) {
obj.focus();
var range = document.selection.createRange();
var clone = range.duplicate();
clone.moveToElementText(obj);
clone.setEndPoint('EndToEnd', range);
pos.start = clone.text.length - range.text.length;
pos.end = clone.text.length - range.text.length + range.text.length;
}
else if (window.getSelection()) {
pos.start = obj.selectionStart;
pos.end = obj.selectionEnd;
}
return pos;
alert(pos.start + "," + pos.end);
}
var isIE = (navigator.appName.toLowerCase().indexOf('internet explorer') + 1 ? 1 : 0);
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
日和って
<textarea cols="60" rows="1" name="text" style="overflow:hidden;">
なんてのじゃ、ダメですよね?(笑)
要は、選択範囲の取得の問題かと…
テキストエリアに限らず取得可能なようなので、以下の情報がご参考になるかと思います。
(内容の検証してはいません)
http://blog.wonder-boys.net/?p=342
http://wiki.bit-hive.com/tomizoo/pgdiff/?pg=Java …
http://d.hatena.ne.jp/brazil/20061021/1161377936
http://blog.iss.ms/2008/09/20/143725
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) [Excel VBA] このコードでは行の挿入や行の消去をすると13のエラーが出てしまう。 3 2022/12/09 00:29
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Ruby vscode 文字化け 1 2022/05/21 19:17
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript 画像の表示位置 3 2022/12/23 08:25
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptで決まった「時刻」...
-
google apps scriptの終了のさせ方
-
javascriptでiframeのURL変更は?
-
翌月を取得するGASが分かりません
-
ASP.NETのコントロールの値をJa...
-
VSCODE[Python]の設定について
-
1日1回だけ引けるjavascriptお...
-
jqGridについて
-
イラストレーターでドキュメン...
-
シンプルなweb版スタンプラリー...
-
C# 演算 分岐処理 繰り返し処理
-
ページの先頭へスクロールして...
-
ジェネレーターの作り方
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
C# 演算 奇数と偶数 表現の仕方
-
【javascript】正規表現で括弧...
-
なぜmatchメソッドがエラーにな...
-
Javascriptで、以下の様な足し...
-
カンマで終わってるのはセミコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
var exports = exports || {}; ...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
HTMLで作った時報アプリが動き...
-
javascriptでテーブルに追加し...
-
html javascript リンク先アド...
-
【西暦等の変換】
-
ローカルにあるファイルを検索...
-
ASP.NETのコントロールの値をJa...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
gas スプレッドシートがアクテ...
-
ASP.NET MVCでObjectをjsに渡す
-
カンマで終わってるのはセミコ...
-
JavaScriptで文字列の特定文字...
-
javascriptでiframeのURL変更は?
-
APIを使って埋め込んだグーグル...
おすすめ情報