0

我看到在 MarkItUp 中没有构建制表符/缩进的方法?所以我做了类似的事情

onTab: { 
  keepDefault: false, 
  replaceWith: function(markItUp) { 
    return miu.openEachLineWith(markItUp, '  '); 
  }
},
openEachLineWith: function(markItUp, openingStr) {
  var textarea = markItUp.textarea,
      selStart = textarea.selectionStart,
      selEnd = textarea.selectionEnd,
      selText = textarea.value.substring(selStart, selEnd),
      lines = [], 
      charsAdded = 0;

  lines = selText.split(/\r?\n/);
  for (var i = 0, len = lines.length; i < len; i++) {
    lines[i] = openingStr + lines[i];
    charsAdded += openingStr.length;
  }
  textarea.selectionEnd = selEnd + charsAdded;
  return lines.join('\n');
}

哪个有效,但是,如何在替换文本后设置选择,我希望它选择选项卡式文本,而且我更喜欢 SO 上的编辑器的工作方式,当我加粗一些文本时,它选择加粗的文本而不是将光标移到末尾,我也可以用 markItUp 来做吗?

4

2 回答 2

0

我一直在编写一个脚本来做到这一点。这是一个例子:http: //jsfiddle.net/timdown/dp2WL/2/

Tab按下时缩进,按下Shift+时缩进,Tab不需要任何库。它没有我想要的那么多测试,但似乎在所有主流浏览器中都能很好地工作,包括 IE 6。主要代码来自我正在处理的一个开源项目。启用制表符缩进的位在底部:

window.onload = function() {
    rangyInputs.init();
    rangyInputs.enableTabIndentation(document.getElementById("test"), "    ");
};
于 2011-01-16T18:09:20.137 回答
0

您必须在afterInsert回调中设置选择(而不是在replaceWith中)

于 2013-03-22T16:06:03.420 回答