javascriptでテキストエリアに独自タグを挿入したい
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();
}
お礼
早速回答いただきありがとうございます。 無事希望通りの動作いたしました。 自分で使うだけですので、これで十分です。 感謝♪