将HTML标记附加到Codemirror和中心光标位置

时间:2014-09-17 20:17:36

标签: javascript jquery codemirror cursor-position

小提琴 - http://liveweave.com/kzBlq3

我正在尝试将自定义html标记添加到CodeMirror中,并将光标聚焦到这些标记的中心。

Here's一个关于如何为textarea做的例子。

// Mirror Codemirror Code to Textarea
$(".code").val( editor.getValue() ).on('keyup change', function() {
  editor.setValue( $(this).val() );
});

// Add center code
$(".bold").click(function() {
  // For a regular textarea & center cursor
    var start = $('.code').get(0).selectionStart;
    $('.code').val($('.code').val().substring(0, start) + "<strong></strong>" + $('.code').val().substring($('.code').get(0).selectionEnd));
    $('.code').get(0).selectionStart = $('.code').get(0).selectionEnd = start + 8;
    $('.code').focus();
    return false;
});

线条和位置总是不同的,所以我必须首先抓住它的位置才能添加并将其移动到添加的字符旁边,就像我使用textarea演示一样。

但是我不想使用空白的textarea。我想使用Codemirror。

我可以毫无问题地添加html标签,但是将光标位置放在附加标签内部是我遇到麻烦的地方。

editor.replaceRange("<strong></strong>", editor.getCursor());

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

添加以下代码以将光标移动到标记的中心。我也更新了你的代码,请使用以下链接访问它

http://liveweave.com/LLq9GS

  $(".bold").click(function() {
    // For codemirror & center cursor
    editor.replaceRange("<strong></strong>", editor.getCursor());
   editor.focus();
    var str="</strong>";
    var mynum=str.length;
    var start_cursor = editor.getCursor();  //I need to get the cursor position
    console.log(start_cursor);  //Cursor position 
    var cursorLine = start_cursor.line;
    var cursorCh = start_cursor.ch;

    //Code to move cursor back [x] amount of spaces. [x] is the data-val value.
    editor.setCursor({line: cursorLine , ch : cursorCh -mynum });