
javascriptでテキストエリアに独自タグを挿入したいと思ってます。
テキストエリアで選んだ文字を独自タグで囲むことまでできましたが
続けて囲いたい場合([b][d]****[/d][/b])に2回目の挿入が選択した文字だけでなく文全体になってしまいます。([b]**************[d]****[/d]*****[/b])
それと選択文字のない場合はカーソルの位置に
([d]打ち消し文字[/d])というように表示したいのに、カーソルの位置を無視して文章の一番最後に挿入されてしまういます。カーソルの位置に挿入するにはどうしたらいいでしょうか?
カーソルの位置に挿入さえ正常になれば([d]打ち消し文字[/d])の形でなく([d][/d])でもかまいません。
大変困ってます。よろしくお願いします。
function InsertText(domobj, text)
{
if (domobj.createTextRange && domobj.caretPos){
var caretPos = domobj.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1)
== ' ' ? text + ' ' : text;
} else if (domobj.getSelection && domobj.caretPos){
var caretPos = domobj.caretPos;
caretPos.text = caretPos.text.charat(caretPos.text.length - 1)
== ' ' ? text + ' ' : text;
} else {
domobj.value = domobj.value + text;
}
}
function CodeLinethrough(id){
var select = document.selection.createRange();
var domobj = GetElementById(id);
if(select.text == ""){
result = "[d]打ち消し文字[/d]";
InsertText(domobj, result);
}else{
select.text = "[d]" + select.text + "[/d]";
InsertText(domobj, select.text);
}
domobj.focus();
}
No.1ベストアンサー
- 回答日時:
が参考になると思います。
>選択文字のない場合
textRange オブジェクトが使えないので、置き換えるべき文字がないですよね。
参考URLの場合、onmouseup イベントなどでカーソルが移動した時にその時のカーソル位置を記録するようになっています。
カーソル位置が分かっていれば、substring で文字を挿入することができます。
他にもいろいろ調べてみましたが、どうも私の環境では無理そう(HTML側で修正が必要)なので他の手段をとります。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javascriptのちょっとした動作...
-
tabindexの取得
-
カーソルが当たった箇所に吹き...
-
TextBoxに半角数字以外を入れた...
-
テキストボックスのフォーカス移動
-
フォーム内で記入したクエリ送...
-
return trueとreturn falseの用...
-
プルダウン 項目が多いので先頭...
-
未入力のテキストエリア
-
value.replaceがうまく動作しま...
-
onchangeイベントを強制的に発...
-
tableの任意行にfocusをあてる
-
value内に変数を入れたい
-
hiddenを動的に作成したい
-
onMOUTHOVERで画像に説明文(5...
-
スマホのフォームでのselect複...
-
Kintone(キントーン)でドロップ...
-
JavaScriptのfileオブジェクト...
-
外部のデータファイルの読み込...
-
Selectボックスの幅を自動で広...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ページ間で変数を保持したい
-
マイナスなら赤字で表示したい...
-
TextBoxに半角数字以外を入れた...
-
tabindexの取得
-
【Javascript】(テキストボッ...
-
HTMLファイル同士での値渡し
-
プルダウンで選択された値を別...
-
テキストボックスに入力した色...
-
SHIFT + TABキーの...
-
VBScriptでpingを実行(ブラウザ...
-
クッキーによる複数のデータ取得
-
クリック→フォーカスのある場所...
-
一部Enter無効化の方法を教えて...
-
JSPでonChangeを強制発行するに...
-
Request.Form(key)の中身をクリ...
-
フォーカスが外れた時の入力チ...
-
JSで一つのボタンを押したとき...
-
GetElementByIdがうまく取得で...
-
テキストボックスの値が変更に...
-
VBSからjavascript
おすすめ情報