CKEditor检查源编辑区上的Dirty()
CKEditor checkDirty() on source editing area
每当我的一个或多个 CKEditor 所见即所得实例发生更改时,我都会为相应的文本区域提供属性data-dirty="1"
,以便我的应用程序知道它已更改。
我为此使用以下代码片段:
$('textarea.wysiwyg').ckeditor(ckeditor_config, function () {
var call_once = false;
this.on('change', function () {
if (this.checkDirty()) {
if (!call_once) {
$(this.element).attr('data-dirty', 1);
$('#edit_form').change();
}
call_once = true;
}
});
});
这很好用,除非用户仅通过源按钮编辑 HTML。在这种情况下,checkDirty()
似乎不会被解雇。
有谁知道我如何在编辑器的两个视图上都使用此功能?我使用的是最新版本的CKEditor(CKEditor 4.5.7),完整版,所以插件是最新版本。
提前谢谢。
正如 change
事件的文档所述:
请注意,
change
事件仅在所见即所得模式下触发。为了在源模式下实现类似的功能,例如,您可以侦听key
事件或本机input
事件(Internet Explorer 8 不支持)。
editor.on( 'mode', function() {
if ( this.mode == 'source' ) {
var editable = editor.editable();
editable.attachListener( editable, 'input', function() {
// Handle changes made in the source mode.
} );
}
} );
如果您在一个页面中使用 jQuery 适配器和多个编辑器实例,则可以尝试以下操作:
$( '#editor1' ).ckeditor( function(){ this.on( 'mode',
function( evt ) {
if ( this.mode == 'source' ) {
var editable = this.editable();
// Get the textarea
var element = $(this.element);
editable.attachListener( editable, 'input', function( ev ) {
// Handle changes made in the source mode.
console.log( ev );
// Set an attribute on the textarea for handling
element.attr('data-dirty',1);
} );
}
});
});
以上是回调函数将在单个编辑器实例上执行,但如果您指定涵盖多个编辑器实例的选择器,例如 .myeditor
侦听器将附加到此方法创建的每个编辑器实例。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 用于检查数组中是否存在元素的javascript自定义方法
- 如何检查字符串的一部分与数组匹配
- Jquery如何检查今天的时间大于使用给定时间
- 使用javascript反复检查用户在facebook上的登录状态
- 使用 jQuery 检查所有值是否为空或已填充
- 使用Javascript使用数组检查文本框中的值
- JavaScript代码未正确检查ajax请求
- 如何检查用户在html5视频播放器中观看了完整的视频
- CKEditor检查源编辑区上的Dirty()