Javascript CodeMirror-检查光标是否位于行的末尾

Javascript CodeMirror-检查光标是否位于行的末尾,javascript,jquery,readonly,codemirror,end-of-line,Javascript,Jquery,Readonly,Codemirror,End Of Line,我在编辑器中以以下方式设置只读行: editor.on('beforeChange', function(cm, change) { if (~readOnlyLines.indexOf(change.from.line)) { change.cancel(); } } 其中readOnlyLines是一个数组,包含要只读的行数 问题是,当我在一个下面有只读行的可编辑行上时,如果我按“Del”,只读行会向上移动,我可以编辑它 如果我在上面有一个只读行,并且我按下

我在编辑器中以以下方式设置只读行:

editor.on('beforeChange', function(cm, change) {
    if (~readOnlyLines.indexOf(change.from.line)) {
        change.cancel();
    }
}
其中readOnlyLines是一个数组,包含要只读的行数

问题是,当我在一个下面有只读行的可编辑行上时,如果我按“Del”,只读行会向上移动,我可以编辑它

如果我在上面有一个只读行,并且我按下“BackSpace”,同样的方法就不起作用了

我想我应该添加一个if,同时检查是否:

  • 按下Del(我使用了捕获事件)
  • 下面的一行是只读的(我在上面的代码中使用if时使用了相同的方法)
  • 光标位于行的末尾(是否存在特定功能?)
  • 光标位于行的末尾(是否存在特定的函数?)

    if(cm.doc.getLine(change.from.line).length==change.from.ch){

    如果readOnlyLines数组是一系列连续行,则可以执行以下操作:

    $(函数(){
    var editor=codemirr.fromTextArea(document.getElementById('txtArea'){
    行号:对
    });
    var readonlyline=[1,2,3];
    编辑器.on('beforeChange',函数(cm,change){
    if(~readOnlyLines.indexOf(change.from.line)){
    change.cancel();
    }否则{
    //如果要在下一个只读行之前删除该行中的
    if((change.origin=='+delete')&&&~readOnlyLines.indexOf(1+change.from.line)){
    //当您在当前行的末尾按DEL时
    if(cm.doc.getLine(change.from.line).length==change.from.ch){
    change.cancel();
    }
    //如果要删除整行
    if(cm.doc.getSelection()==cm.doc.getLine(change.from.line)){
    change.cancel();
    }
    //如果行是空的
    if(cm.doc.getLine(change.from.line).trim().length==0){
    change.cancel();
    }
    }
    }
    });
    });
    
    1111
    2222只读
    3333只读
    4444只读
    5555
    6666
    7777