javascript - 文本解析然后在javascript中的textarea中突出显示

标签 javascript jquery

有没有一种巧妙的方法可以在打字时动态突出显示文本区域中的文本?

我基本上会输入:

This is a [[note]] to do on friday.

在文本区域上,然后使用 a highlighting library ,我会这样调用它:

    function FindAllNotes() {
        var note = /^(?:\[{2}(?!\[+))(.+)(?:\]{2}(?!\[+))$/g
        , input = ($(#textarea).val()).match(note);
           $(#textarea).highlightWithinTextarea({
            highlight: [input],
            className: 'yellow'
          });

    }
    $(#textarea).on('keyup', function () {
        FindAllNotes();
    });

但问题是,每次我输入时,它都会工作并突出显示 [[ ]] 中包含的注释,然后我就会失去文本区域上的光标/焦点。

最佳答案

您链接到的插件可以按照您的需要处理正则表达式(尽管您应该从中删除 ^$,以免尝试匹配整个字符串)。

$(function(){
  $('.example').highlightWithinTextarea({
    highlight: /(?:\[{2}(?!\[+))(.+)(?:\]{2}(?!\[+))/g,
    className: 'highlight'
  });
});
.example{
  width:500px;
  height:250px;
}

.highlight{
  background-color:tomato;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://lonekorean.github.io/highlight-within-textarea/jquery.highlight-within-textarea.js"></script>
<link rel="stylesheet" href="http://lonekorean.github.io/highlight-within-textarea/jquery.highlight-within-textarea.css">

<textarea class="example">This is a [[note]] to do on friday.</textarea>

<小时/>

请记住,您需要包含插件中的 css 文件,该文件将 textareadiv 文本包装/对齐

关于javascript - 文本解析然后在javascript中的textarea中突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664005/

相关文章:

jquery - 视频背景大小问题

javascript - jQuery 在模式打开/关闭时添加或删除类

javascript - 无法使用 jquery 的单击事件处理程序来检测右键单击

javascript定义cookie

javascript - 解析云代码回调不起作用

javascript - React 将变量发送到 JS 页面/函数

javascript - 关于 JQuery 脚本

javascript - 如何在点击面板前后添加新面板

javascript - 使用 forEach 删除数组中的重复项

javascript - 使用ajax将文件输入发送到php