javascript - 如何在 CodeMirror 中触发键盘事件?

标签 javascript jquery events coffeescript codemirror

我正在使用不同的文本字段作为 CodeMirror 的代理。我想使用 closebrackets.js 等功能通过键盘事件激活,例如 keydown , keypress , 和 keyup .我尝试了几种不同的方法来触发这些事件,但都没有导致 CodeMirror 收到任何东西:

kc = 219
e = $.Event 'keydown', { which: kc }
$( myCodeMirror.getInputField() ).trigger e

不起作用。没有事件被触发。

cmIF = $( myCodeMirror.getInputField() )

textArea = $('<textarea></textArea>')
$('body').append textArea
textArea.keydown (e) ->
    cmIF.focus()
    return

kc = 219
e = $.Event 'keydown', { which: kc }
textArea.trigger e

尝试转发来自不同文本区域的事件。不起作用。 CM 不会触发事件。

$( myCodeMirror.getWrapperElement() ).children().each (index) ->
    $(this).trigger e
    return

尝试在 CM 包装器的每个子项上触发事件。不起作用。没有触发 CM 事件。

我在这里做错了什么?如何在 CodeMirror 实例上触发键盘事件?

最佳答案

我不确定我是否 100% 理解您的意思,但目前我在为 codemirror 实例定义配置选项时定义键盘事件。

var cmInstance = CodeMirror(target, {
    value: myTextArea.value,
    //other options here perhaps

    //defining some keyboard shortcuts
    extraKeys: {
        "Ctrl-J": "toMatchingTag",
        "Ctrl-S": function(cm) {
            saveCode(cm); //function called when 'ctrl+s' is used when instance is in focus
        },
        "F11": function(cm) {
            toggleFullscreen(cm,true); //function called for full screen mode 
        },
        "Esc": function(cm) {
            toggleFullscreen(cm,false); //function to escape full screen mode
        }
    }
});

请记住,这些函数只会在 codemirror 实例处于焦点时触发。然后你可以在你的函数中做任何你喜欢的事情,甚至可以添加新的监听器来查看发生了什么类型的事件(?)。

希望对您有所帮助。

关于javascript - 如何在 CodeMirror 中触发键盘事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19392098/

相关文章:

javascript - jQuery 根据更改和加载时选择的另一个 SELECT 删除 SELECT 选项

events - 冒泡的概念是什么?

c# - 以反射方式将一个事件直接连接到另一个事件

c# - 事件处理程序和接口(interface)

JavaScript 窗口 ["functionName"](参数) 返回 "is not a function"TypeError

javascript - jQuery:查找包含特定文本的元素

javascript - 查询 : Set delay for each iteration

jQuery 嵌套 DOM 节点 > 3 层深度

javascript - 使用 jQuery 添加/删除选择选项在 IE 中不起作用

jquery - 使用 jquery ajax 调用 jsf 托管 bean 方法(AjaxBehaviorEvent 监听器处理程序)