有一个淫荡的做法就是比较输入前和输入后整个body的innerHTML属性(逐字符比较),找出那个部分不一样的(估计是多个<br>),替换成一个<br>

解决方案 »

  1.   

    编辑模式按下shift + Enter是换行.直接按Enter是换列.
      

  2.   

    请参考以下内容
    var canFormat = 0;
    if (document.selection ||
        (typeof(document.createElement("textarea")["setSelectionRange"]) != "undefined"))
        canFormat = 1;
    function getSelected (e) {
        if (document.selection) {
            e.focus();
            var range = document.selection.createRange();
            return range.text;
        } else {
            var length = e.textLength;
            var start = e.selectionStart;
            var end = e.selectionEnd;
            if (end == 1 || end == 2 && length != undefined) end = length;
            return e.value.substring(start, end);
        }
    }function setSelection (e, v) {
        if (document.selection) {
            e.focus();
            var range = document.selection.createRange();
            range.text = v;
        } else {
            var length = e.contentLength;
            var start = e.selectionStart;
            var end = e.selectionEnd;
            if (end == 1 || end == 2 && length != undefined) end = length;
            e.value = e.value.substring(0, start) + v + e.value.substr(end, length);
            e.selectionStart = start + v.length;
            e.selectionEnd = start + v.length;
        }
        e.focus();
    }function formatStr (e, v) {
        if (!canFormat) return;
        var str = getSelected(e);
        if (str) setSelection(e, '[' + v + ']' + str + '[/' + v + ']');
        return false;
    }function insertLink (e, isMail) {
        if (!canFormat) return;
        var str = getSelected(e);
        var link = '';
        if (!isMail) {
            if (str.match(/^https?:/)) {
                link = str;
            } else if (str.match(/^(\w+\.)+\w{2,5}\/?/)) {
                link = 'http://' + str;
            } else if (str.match(/ /)) {
                link = 'http://';
            } else {
                link = 'http://' + str;
            }
        } else {
            if (str.match(/@/)) {
                link = str;
            }
        }
        var my_link = prompt(isMail ? '输入 Email 地址:' : '输入 URL: ', link);
        if (my_link != null) {
             if (str == '') str = my_link;
             if (isMail) my_link = 'mailto:' + my_link;
            setSelection(e, '' + str + '');
        }
        return false;
    }function Decode(e) {
            if (!canFormat) return;
            var str = getSelected(e);        if (!str) return;
            str = str.replace(new RegExp("&","g"), "&amp;");
            str = str.replace(new RegExp("<","g"), "&lt;");
            str = str.replace(new RegExp(">","g"), "&gt;");        str = str.replace(new RegExp('"',"g"), "&quot;");
      /*    str = str.replace(new RegExp(' ',"g"), "&nbsp;"); */
            setSelection(e, str);
            return false;
    }   function $F(id)
      {
      return document.getElementById()&&document.getElementById(id)?document.getElementById(id).value:document.all[id].value;
      }   function $(id)
      {
      return document.getElementById() && document.getElementById(id)?document.getElementById(id):document.all[id];
      }   function icon()
      {
      if (canFormat) {
    with (document) {
    write('<img title="粗体" onclick="return formatStr(document.forms[0].content, \'B\')" src="images/bold.gif" alt="粗体" width="26" height="19" />');
    write('<img title="斜体" onclick="return formatStr(document.forms[0].content, \'I\')" src="images/italic.gif" alt="斜体" width="26" height="19" />');
    write('<img title="下划线" onclick="return formatStr(document.forms[0].content, \'U\')" src="images/underline.gif" alt="下划线" width="26" height="19" />');
    write('<img title="插入链接" onclick="return insertLink(document.forms[0].content)" src="images/link.gif" alt="插入链接" width="26" height="19" />');
    write('<img title="引用" onclick="return formatStr(document.forms[0].content, \'BlockQuote\')" src="images/quote.gif" alt="引用" width="26" height="19" />');
    write('<img title="HTML编码" onclick="return Decode(document.forms[0].content)" src="images/decode.gif" alt="Decode" width="26" height="19" />');
                 }
              }
      }
      

  3.   

    关键内容:document.selection
    关键方法:getSelected,setSelected