当前位置:  开发笔记 > 编程语言 > 正文

使用文本区域中的代码镜像获取选定/突出显示的文本

如何解决《使用文本区域中的代码镜像获取选定/突出显示的文本》经验,为你挑选了1个好方法。

在我的带有codemirror的文本区域中,我试图能够选择/突出显示文本,然后能够单击我的粗体按钮,并应在其周围包裹粗体标签.

我看过了

问题1,SO问题2

但似乎不适用于代码镜像.

我的问题是:使用codemirror我如何获取所选文本,然后确保当我单击粗体按钮时它正确包装文本?

Codepen代码视图

Codepen全视图

脚本

var editor = document.getElementById('text-editor');
var string = grabed_text();

    $("#text-editor").each(function (i) {
        editor = CodeMirror.fromTextArea(this, {
            lineNumbers: true,
            mode: 'html'
        });

        $('button').click(function(){

          var val = $(this).data('val');


          switch(val){
            case 'bold': editor.replaceSelection('' + string + '');
            break;
           }
        });
    });

function grabed_text() {

}    

HTML

Arkantos.. 5

您的代码中的问题出在切换情况下,您正在处理粗体按钮.

 case 'bold': 
      editor.replaceSelection('' + string + '');
      break;

在这里,你通过string变量周围包装标签来替换当前选择,但它没有在任何地方定义.理想情况下,它应该反映编辑器中的当前选择.所以我建议你改变你的代码,如下所示.

  // inside your click handler
  var val = $(this).data('val');
  var string = editor.getSelection();

  switch(val){
     case 'bold': { 
               editor.replaceSelection('' + string + '');
            break;
          }
  }

这是一支带有上述变化的笔.



1> Arkantos..:

您的代码中的问题出在切换情况下,您正在处理粗体按钮.

 case 'bold': 
      editor.replaceSelection('' + string + '');
      break;

在这里,你通过string变量周围包装标签来替换当前选择,但它没有在任何地方定义.理想情况下,它应该反映编辑器中的当前选择.所以我建议你改变你的代码,如下所示.

  // inside your click handler
  var val = $(this).data('val');
  var string = editor.getSelection();

  switch(val){
     case 'bold': { 
               editor.replaceSelection('' + string + '');
            break;
          }
  }

这是一支带有上述变化的笔.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有