diff --git a/includes/ckeditor.utils.js b/includes/ckeditor.utils.js
index ce22cd4..7161cf5 100644
--- a/includes/ckeditor.utils.js
+++ b/includes/ckeditor.utils.js
@@ -8,6 +8,7 @@ if (typeof window.CKEDITOR_BASEPATH === 'undefined') {
 (function ($) {
   Drupal.ckeditor = (typeof(CKEDITOR) != 'undefined');
   Drupal.ckeditor_ver = false;
+  Drupal.ckeditor_is_loading = {};
 
   Drupal.ckeditorToggle = function(textarea_ids, TextTextarea, TextRTE){
     if (!CKEDITOR.env.isCompatible) {
@@ -32,6 +33,8 @@ if (typeof window.CKEDITOR_BASEPATH === 'undefined') {
  * @param string textarea_id
  */
   Drupal.ckeditorInit = function(textarea_id) {
+    // Flag this textarea as loading.
+    Drupal.ckeditor_is_loading[textarea_id] = true;
     var ckeditor_obj = Drupal.settings.ckeditor;
     $("#" + textarea_id).next(".grippie").css("display", "none");
     $("#" + textarea_id).addClass("ckeditor-processed");
@@ -98,6 +101,11 @@ if (typeof window.CKEDITOR_BASEPATH === 'undefined') {
         ((ev.editor.editable && ev.editor.editable()) || ev.editor.document.getBody()).on( 'keydown', function() {
           $(ev.editor.element.$).trigger('keydown');
         });
+
+        // Unflag this textarea as loading.
+        if (textarea_id in Drupal.ckeditor_is_loading) {
+          delete Drupal.ckeditor_is_loading[textarea_id];
+        }
       },
       focus : function(ev)
       {
@@ -195,6 +203,10 @@ if (typeof window.CKEDITOR_BASEPATH === 'undefined') {
     if (!CKEDITOR.env.isCompatible) {
       return;
     }
+    // Skip if this textarea is loading.
+    if ((textarea_id in Drupal.ckeditor_is_loading) && Drupal.ckeditor_is_loading[textarea_id]) {
+      return;
+    }
     if (Drupal.ckeditorInstance && Drupal.ckeditorInstance.name == textarea_id)
       delete Drupal.ckeditorInstance;
 
