codemirror覆盖默认按键事件

工作中用到codemirror,需要增加一个'Backspace'按键的删除事件(遇到'field'字段整个删除而不是逐字删除)。开始使用了keyHandled方法和extrakey方法,都出现了'Backspace'默认事件无法阻止的情况,后来改用addKeyMap方法,搞定。其实官方文档中也讲到这个方法常用于插件中增加按键绑定,可惜开始没注意。

代码如下

this.editor.addKeyMap({
    'Backspace': function (cm) {
        var ch = cm.getTokenAt(cm.getCursor());
        if(ch.type == 'field') {
            cm.execCommand('delWordBefore');
            cm.execCommand('delCharBefore');
        } else {
            cm.execCommand('delCharBefore');
        }
    }
});

你可能感兴趣的:(js)