MarkItUp:Tab / Indent,Set Selection

时间:2011-01-16 02:25:50

标签: javascript markitup

我发现在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吗?

2 个答案:

答案 0 :(得分:0)

我一直在编写一个脚本来执行此操作。这是一个例子:http://jsfiddle.net/timdown/dp2WL/2/

Tab 时缩进,按下 Shift + Tab 并且不需要任何库时出现缩进。它没有像我想的那样多的测试,但似乎在所有主流浏览器中都运行良好,包括IE 6.主要代码来自an open source project I'm working on。启用制表符缩进的位在底部:

window.onload = function() {
    rangyInputs.init();
    rangyInputs.enableTabIndentation(document.getElementById("test"), "    ");
};

答案 1 :(得分:0)

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