選択範囲を文字列で置き換える

フォーム上の入力欄(textarea)で、選択範囲を指定文字列と置き換える処理。

/**
 * @param Element field 対象textareaフィールド(getElementById等で取得)
 * @param string str 差し込む文字列
 */
function insertString (field, str) {
  if (field.selectionStart) {
    var position = field.selectionStart;
    field.value = field.value.substr(0, position)
      + str
      + field.value.substr(field.selectionEnd, field.value.length);
    field.selectionStart = position + str.length;
    field.selectionEnd = field.selectionStart;
  } else { // IE対応
    field.focus();
    field.document.selection.createRange().text = str;
    // field.value += str;
  }
}

最近JavaScriptのネタばっかりだな。
実はもうひとつネタがあるのだが、こちらは仕込みに若干時間を要するので、この週末にでも。

7/10 16:55 追記: 誤りを発見。一部修正。