2017-05-15 8 views
0

保存されていないフォームがあり、ユーザーがキャンセルした場合、私は彼にメッセージを表示します。それは完全に入力のために働いていますが、ckeditorのためではありません。これは私のコードです。CKEDITORとonchangeとonkeyupをどのようにバインドできますか?

$(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

ドキュメントを読む... – epascarello

答えて

1

changeイベントとkeyイベントがあります。

変更イベント:エディターの内容が変更されたときに発生します。

パフォーマンス上の理由から、内容が実際に に変更されたかどうかは検証されません。エディタは、代わりに が通常変更をもたらすいくつかの編集アクションを監視します。したがって、この事象は、場合によっては変更が起こらない場合には を発し、2回発射される可能性があります。

変更イベントを頻繁に発生させないことが重要な場合は、 は、 イベントリスナー内の以前のエディタコンテンツと現在のエディタコンテンツを比較する必要があります。すべての変更時にこれを行うことはお勧めしません イベント。

変更イベントは、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. 
     }); 
    } 
}); 

キーイベント:任意のキーボードキー(またはそれらの組み合わせ)が編集エリアに押さ あるときに発生します。

関連する問題