入力補助

編集中

addEditToolButton(document.getElementById("ttttt"));

function addEditToolButton(textarea) {
    var toolbar = document.createElement("div");

    function addButton(id, title, fn) {
        var a = document.createElement("div");
        a.href = "#";
        a.innerHTML = "["+id+"]";
        a.id = id;
        a.title = title;
        a.onclick = function() { try { fn() } catch (e) { } return false };
        a.style.float = "left";
        toolbar.appendChild(a);
    }

    function encloseSelection(prefix, suffix) {
        textarea.focus();
        var start, end, sel, scrollPos, subst;
        if (typeof(document["selection"]) != "undefined") {
            sel = document.selection.createRange().text;
        } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
            start = textarea.selectionStart;
            end = textarea.selectionEnd;
            scrollPos = textarea.scrollTop;
            sel = textarea.value.substring(start, end);
        }
        //alert("start:"+start+"\nend:"+end+"\nscrollPos:"+scrollPos+"\nsel"+sel);
        subst = prefix + sel + suffix;
        //subst = sel;
        if (typeof(document["selection"]) != "undefined") {
          var range = document.selection.createRange().text = subst;
          //textarea.caretPos -= suffix.length;
        } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
          textarea.value = textarea.value.substring(0, start) + subst +
                           textarea.value.substring(end);
          /*if (sel) {
            textarea.setSelectionRange(start + subst.length, start + subst.length);
          } else {
            textarea.setSelectionRange(start + prefix.length, start + prefix.length);
          }
          textarea.scrollTop = scrollPos;
           */
        }
        if(typeof(textarea["setSelectionRange"]) != "undefined") {
            textarea.setSelectionRange(start, start+subst.length);
        } else {
            var end_new = - ( textarea.value.length - start+subst.length );
            var range = textarea.createTextRange();
            range.moveStart( "character", start );
            range.moveEnd( "character", end_new );
            range.select();
        }
    }

    addButton("font", "フォント", function() { encloseSelection("<font>", "</font>");});
    addButton("b", "太字", function() { encloseSelection("</b>", "<b>");});
    addButton("i", "斜体", function() { encloseSelection("<i>", "</i>");});
    addButton("s", "取り消し線", function() { encloseSelection("<s>", "</s>");});
    addButton("u", "アンダーライン", function() { encloseSelection("<u>", "</u>");});
    addButton("br", "改行", function() { encloseSelection("", "<br>");});

    textarea.parentNode.insertBefore(toolbar, textarea);
}