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

标签 javascript jquery codemirror cursor-position

fiddle - http://liveweave.com/kzBlq3

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

Here's文本区域如何完成的示例。

// 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 演示中所做的那样。

但是我不想使用空白文本区域。我想使用 Codemirror。

我可以毫无问题地添加 html 标记,但是在附加标记内获取光标位置是我遇到问题的地方。

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

最佳答案

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

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 });

关于javascript - 将 HTML 标记附加到 Codemirror 和中心光标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899592/

相关文章:

javascript - 通过 JavaScript 选择文本

jquery - 在 Shadowbox 中加载内容之前如何防止 iframe 白色闪烁?

javascript - 在没有 for 循环的情况下调整大小时(使用 jquery)在单个元素中 Bootstrap 轮播多个图像

javascript - codemirror 选定的文本 css 不起作用(div 背景颜色不显示在文本区域中)

javascript - AJax 没有正确调用 php 文件,html 表单

javascript - 如何访问 Angularjs 中 init 函数中 .then 中设置的值?

javascript - 根据请求参数动态添加字段到 mongoose 聚合

Jupyter Notebook 中的 Octave 语法突出显示

javascript - 如何在 CodeMirror 编辑器中使用 selenium 模拟关键事件

javascript - 无法接收使用 ajax 发布的 js 数组