如何用CKEDITOR绑定onchange和onkeyup?

时间:2017-05-15 12:54:46

标签: javascript jquery ckeditor ckeditor4.x

如果我们有未保存的表单并且用户取消,我想整合确认,我们会向他显示一条消息。它非常适合输入,但不适用于ckeditor。这是我的代码。

$(document).ready(function () {
    $('form').attr('onsubmit', 'disableBeforeUnload();');
    $('form input').attr('onchange', 'enableBeforeUnload();');
    $('form input').attr('onkeyup', 'enableBeforeUnload();');
    $('form textarea').attr('onchange', 'enableBeforeUnload();');
    $('form textarea').attr('onkeyup', 'enableBeforeUnload();');

});

function enableBeforeUnload() {
    window.onbeforeunload = function (e) {
        return "Discard changes?";
    };
}
function disableBeforeUnload() {
    window.onbeforeunload = null;
}

我是如何实现这一目标的?

1 个答案:

答案 0 :(得分:1)

change个事件和key个事件。

  

更改事件:更改编辑器内容时触发。

     

由于性能原因,尚未确认内容是否真实   改变。编辑反而会观察几个编辑操作   通常会导致变化。因此,在某些情况下可能会触发此事件   当没有发生变化或甚至可能被解雇两次时。

     

如果重要的是不要经常触发更改事件,那么你   应该比较之前和当前的编辑器内容   事件监听器。不建议每次更改都这样做   事件

     

请注意,更改事件仅在wysiwyg模式下触发。   为了在源模式中实现类似的功能,您   可以监听例如关键事件或本机输入事件(不是   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.
        } );
    }
} );
  

键事件:当任何键盘键(或其组合)出现时触发   在编辑区按下。

editor.on( 'key', function( evt ) {
    if ( evt.data.keyCode == CKEDITOR.CTRL + 90 ) {
        // Do something...

        // Cancel the event, so other listeners will not be executed and
        // the keydown's default behavior will be prevented.
        evt.cancel();
    }
} );