Как насчет того, чтобы поместить destroy()
в оператор if()
?Вы можете иметь предложение else, которое вызывает уничтожение, если ничего не изменилось.Если что-то изменилось, вы можете вызвать destroy()
в условии if после передачи данных.
$('.editable').click(function() {
editor = CKEDITOR.replace(this);
editor.on('blur', function(e)
{
if (e.editor.checkDirty()) {
// get data with e.editor.getData() and do some ajax magic
if ( dataTransferComplete ) {
e.editor.destroy();
}
} else {
e.editor.destroy();
}
});
});
Или вы можете проверить переменную перед вызовом destroy()
.Установите для этой переменной значение true после завершения передачи данных и в предложении else, поэтому destroy()
не будет вызываться, пока вы не проверите изменения и не передали обновленные данные.
$('.editable').click(function() {
editor = CKEDITOR.replace(this);
editor.on('blur', function(e)
{
var okToDestroy = false;
if (e.editor.checkDirty()) {
// get data with e.editor.getData() and do some ajax magic
okToDestroy = true;
} else {
okToDestroy = true;
}
if (okToDestroy )
e.editor.destroy();
});
});
Это схема, я не тестировал код, но если показывает концепцию.
Будь здоров,Джо