当只有一个实例发生更改时,所有实例都会触发Ckeditor onchange

当只有一个实例发生更改时,所有实例都会触发Ckeditor onchange,ckeditor,fckeditor,Ckeditor,Fckeditor,我使用ckeditor inline将一些用户可编辑的行添加到使用此代码的表中(该函数每行调用一次,参数是我想要的每种类型的可编辑列的Id)。忽略多余的阵列建筑 function activare_campuri_editabile_extinse(pu, adaos, cota, cant, cant_doc, pv) { var campuri_editabile = [ pu, adaos, cota, cant, cant_doc , pv]; $j.each(campur

我使用ckeditor inline将一些用户可编辑的行添加到使用此代码的表中(该函数每行调用一次,参数是我想要的每种类型的可编辑列的Id)。忽略多余的阵列建筑

function activare_campuri_editabile_extinse(pu, adaos, cota, cant, cant_doc, pv) {      
var campuri_editabile = [ pu, adaos, cota, cant, cant_doc , pv];

$j.each(campuri_editabile, function(index) {
    var ce = this; 
    editor = CKEDITOR.inline( $j('#' + this).attr('id'), {          
        enterMode : CKEDITOR.ENTER_BR,
        on: {
            blur: function( event ) {
                var data = event.editor.getData();
                if(ce.split('_')[0] == 'pu' || ce.split('_')[0] == 'pv') {
                    $j('#'+ce).text(formatare_cu_virgula(data));
                }
                if(ce.split('_')[0] == 'pu') {                      
                    verificare_modificare_pret('#' + ce, data, 'select_gestiune_primitoare' );
                }
            },
            focus: function ( event ) {
                var data = event.editor.getData();
                if(ce.split('_')[0] == 'pu' || ce.split('_')[0] == 'pv') {  
                    $j('#'+ce).text(deformatare_cu_virgula(data));
                }
            },      
            change: function( event ) {
                if(event.editor.checkDirty() == true) {                     
                    var data = event.editor.getData();
                    if(ce.split('_')[0] == 'pu' || ce.split('_')[0] == 'pv' || ce.split('_')[0] == 'cota') {
                        corelare_valori_tabel(ce,'adaos', 'extins', data);
                    }
                    if(ce.split('_')[0] == 'adaos') {
                        corelare_valori_tabel(ce,'pret_vanzare', 'extins', data);
                    }
                    if(ce.split('_')[0] == 'cant') {                                                    
                        corelare_valori_tabel(ce, 'cantitate', 'extins', data);
                    }
                    event.editor.resetDirty();
                }                   
            }          
        }
    } );
    editor.config.keystrokes = [[ 13, 'doNothing']];
    editor.resetDirty();
    });
}
onchange函数用于修改行中的某些单元格,以保持数据的完整性(使用此示例:设置标记百分比,以便在增值税或进项价格发生变化时,销售价格保持不变)。问题是,当其中一个编辑器实例的一个onchange事件触发时,它们都会触发。看到两个或多个表格单元格如何以两种方式链接(更改标记将更改售价,而更改售价将更改标记),结果完全是混乱的

我在使用checkDirty和resetDirty方法时是否做错了什么?还是我遗漏了什么?(在ckEditor 4.01上运行onchange插件1.7)


我通过为直接启用了ckeditor的元素添加onkeyup处理程序来解决这个问题。因此,我没有通过CKEDITOR添加onchange事件,而是将onkeyup事件直接添加到数组中的每个元素。

是否有在线示例?当你说“所有实例的触发器”时,你的意思是如果你在change函数中添加一个
console.log(“foo”)
,并且你更改了一个实例的数据,那么你的JS控制台中就会有多个“foo”?是的,就是这样。不仅是多个,而且是所有的。当其中一个实例发生更改时,所有连接了onchange处理程序的ckeditor实例都将触发