2017-05-15 6 views
0

Ich möchte eine Bestätigung integrieren, wenn wir nicht gespeicherte Formular und Benutzer storniert haben, zeigen wir ihm eine Nachricht. Es funktioniert perfekt für Eingaben, aber nicht für Ckeditor. Das ist mein Code.Wie kann ich onchange und onkeyup mit CKEDITOR binden?

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

Irgendwelche Ideen, wie ich das erreichen kann?

+0

Lesen Sie die Dokumentation .... – epascarello

Antwort

1

Es gibt ein change Ereignis und ein key Ereignis.

Ereignis ändern: Wird ausgelöst, wenn der Inhalt des Editors geändert wird.

Aus Leistungsgründen ist es nicht verifiziert, wenn der Inhalt wirklich geändert wurde. Der Editor beobachtet stattdessen mehrere Bearbeitungsaktionen, die normalerweise zu Änderungen führen. Dieses Ereignis kann daher in einigen Fällen ausgelöst werden, wenn keine Änderungen auftreten oder sogar zweimal ausgelöst werden.

Wenn es wichtig ist, das Änderungsereignis nicht zu häufig ausgelöst zu bekommen, sollten Sie den vorherigen und den aktuellen Editorinhalt im Ereignis-Listener vergleichen. Es wird nicht empfohlen, dies bei jeder Änderung Ereignis zu tun.

Bitte beachten Sie, dass das Änderungsereignis nur im WYSIWYG-Modus ausgelöst wird. Um ähnliche Funktionen im Quellmodus zu implementieren, können Sie beispielsweise auf das Schlüsselereignis oder das systemeigene Eingabeereignis (nicht unterstützt von Internet Explorer 8) warten.

editor.on('mode', function() { 
    if (this.mode == 'source') { 
     var editable = editor.editable(); 
     editable.attachListener(editable, 'input', function() { 
      // Handle changes made in the source mode. 
     }); 
    } 
}); 

Schlüsselereignis: ausgelöst, wenn eine beliebige Tastaturtaste (oder eine Kombination davon) im Bearbeitungsbereich gedrückt ist.

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(); 
    } 
}); 
Verwandte Themen