我正在使用ckeditor内联使用此代码将一些用户可编辑的行添加到表中(该函数每行调用一次,参数是我想要的每种类型的可编辑列的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事件。