我正在使用 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 事件。