javascript - CodeMirror OnSelect 事件不起作用

标签 javascript events codemirror

查看最后的编辑

<小时/>

我刚刚开始使用CodeMirror对于一个项目,我面临着一个我根本不理解的问题。

问题在于处理 CodeMirror 的事件,特别是在 "select" 事件上,因为我正在处理 "change" 事件,没有出现任何问题,我无法猜测是什么正在发生。

让我们看一些代码;我将 CodeMirror 对象包装到另一个对象中,它看起来类似于:

function expressionEditor(config)
{
    jQuery('#divEditor').append('<textarea id="expression"/>');

    this.editor = CodeMirror.fromTextArea(document.getElementById('expression'),
    {
      mode:        'custom',
      lineNumbers: true,
      extraKeys:   {'Ctrl-Space': 'autocomplete'}
    });

    this.OnChange = function(instance, object)
    {
      if (object.text[0] === '.')
      {
        CodeMirror.showHint(this.editor, CodeMirror.hint.custom);
      }
    };

    this.OnSelectHint = function(completion, Element)
    {
      alert(completion + ' : ' + Element);
    };

    CodeMirror.on(this.editor, 'change', jQuery.proxy(this.OnChange, this));

    CodeMirror.on(this.editor, 'select', jQuery.proxy(this.OnSelectHint, this));
}

正如我所说,事件“change”按预期工作,当我在编辑器中写入一个点时,它会调用函数this.OnChange来召唤提示列表,但是当我导航到建议的提示时,永远不会调用 this.OnSelectHint 函数(导航器上不会弹出 alert)。

根据CodeMirror documentation对于 "select" 事件,回调必须是“选择完成时触发。传递完成值(字符串或对象)以及在菜单中表示它的 DOM 节点”。

由于其他事件正在发生,我完全迷失了......关于发生了什么的任何线索?

<小时/>

编辑

正如 Marijn 所说,CodeMirror 中没有 "select" 事件; "select" 事件来自 show-hint CodeMirror 插件。只是为了了解:

  • 如何处理 CodeMirror Addons 触发的事件?

最佳答案

CodeMirror API 中没有“select” 事件。因此,聆听它绝对没有任何作用。

关于javascript - CodeMirror OnSelect 事件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23908366/

相关文章:

php - CodeMirror 保存自己 onBlur

css - 更改 jupyter 的匹配括号颜色

javascript - 基于计数器出现的对象

vba - 可以创建适用于多个工作表的通用宏吗?

javascript - Codemirror- linting - 是否有明确触发 linting 的事件?

javascript - 如何翻译 d3.js 节点?

c++ - 在事件上使用 "Dispatch"函数的原因是什么?

javascript - TDD 和参数验证 Javascript

javascript - 在 if 条件下定义和使用函数

javascript - JS : Multiple objects in an array stored in local storage