如果我们有未保存的表单并且用户取消,我想整合确认,我们会向他显示一条消息。它非常适合输入,但不适用于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;
}
我是如何实现这一目标的?
答案 0 :(得分:1)
更改事件:更改编辑器内容时触发。
由于性能原因,尚未确认内容是否真实 改变。编辑反而会观察几个编辑操作 通常会导致变化。因此,在某些情况下可能会触发此事件 当没有发生变化或甚至可能被解雇两次时。
如果重要的是不要经常触发更改事件,那么你 应该比较之前和当前的编辑器内容 事件监听器。不建议每次更改都这样做 事件
请注意,更改事件仅在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();
}
} );