CodeMirror OnSelect事件不起作用

问题描述 投票:0回答:2

请参阅结尾处的编辑


我刚开始在项目中使用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插件引发的事件?

参见最后的编辑,我刚刚开始将CodeMirror用于一个项目,并且遇到了一个我根本不了解的问题。问题是要处理CodeMirror的事件,特别是在...

javascript events codemirror
2个回答
1
投票

[CodeMirror API中没有"select"事件。因此,听它绝对不会做任何事情。


0
投票

问题是,来自"select"show-hint事件是在自动完成建议数组上触发的,而不是在CodeMirror编辑器本身上触发的。

© www.soinside.com 2019 - 2024. All rights reserved.