工作中用到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'); } } });