Orange Garden Room
週刊ダークキングダム内部掲示板
内部掲示板の書き込みと編集画面におけるタグ挿入JSのメモ。

以下アルゴリズム。

○テキストエリアで、キーを放す(onKeyUp)、クリックする(onClick)、選択する(onSelect)のどれかをやったときにその場所をグローバル変数に保存するようにする。

○あとはボタンを押されたときに、その位置にタグを挿入。
選択されていれば、選択されていたところの周りにタグが挿入されるようにする。

○このとき、保存したポジションでifかけておかないと、HTMLの頭にタグが挿入されていってしまうので注意。

プログラムのメモ。


/* 入力、クリック、選択されたときに動かす関数 */
function cursormove() {

  // 実行
  try {
    // createTextRangeが使えるならば
    if (document.getElementById('content').createTextRange) {
      // currentPosに現在の選択されている位置のコピー(duplicate())を保存
      document.getElementById('content').currentPos = document.selection.createRange().duplicate();
    }
    // 正常終了
    return true;

  // エラーで動かなかったら
  } catch(e) { }

}


/* タグを入力する関数 */
/* 第一引数:開始タグ、 第二引数:終端タグ */
function taginput(linp, rinp) {

  // createTextRangeが使用可能で、currentPosに値が入っているならば
  if (document.getElementById('content').createTextRange && document.getElementById('content').currentPos) {

    // 取得した位置を使いやすいように変数に格納
    var currentPos = document.getElementById('content').currentPos;

    // 選択された文字(または現在地)のテキストを引数二つ(開始タグ、終端タグ)ではさんで代入
    currentPos.text = linp + currentPos.text + rinp;


  // createTextRangeが使用不可能または、currentPosに値が入っていないならば
  } else {
    // idがcontentのフィールドの終端に開始タグと終端タグを付加して終了
    document.getElementById('content').value = document.getElementById('content').value + linp + rinp;
  }

}

|Dark Kingdom|みと|2007/2/27(Tue) 15:59:57|コメント(0)|トラックバック(0)|
この記事へのトラックバック
この記事のトラックバックURL
http://orange.grandaria.com/room/weblog.cgi?mode=trackback&id=5
コメント一覧
コメントする

名前(全角20文字まで):

ホームページアドレス(半角150文字まで):

本文: