2012-09-26 52 views
0

我在我的網站中使用CKeditor來獲取用戶輸入。我正在使用CKEditor,因爲我希望用戶能夠進行某種格式化,例如使文本變粗體,斜體,複製粘貼內容的能力等。 我得到的輸入也用於製作一些報告。CKEditor:如何確保輸入的一致性

現在我面臨的問題是,一些用戶是不同的字體[有些使用Arial,一些Calibiri等],也使用他們的首選字體大小。

製作報告時,我希望確保至少有兩件事通過網站輸入的文字的一致性 - 字體和字體大小[說我想它被限制爲Arial和大小10]。

我想禁用CKEditor功能來選擇字體和字體大小。但是,如果用戶複製粘貼內容,那麼我仍然會遇到字體和大小的問題。我正在尋找可以嘗試的選項。

我想到的一個選擇是 - 粘貼內容後,如果我可以運行CKEditor,並根據我的規格字體&大小替換內容。如果是這樣,我該怎麼做?

我在想的另一個選擇是 - 在表單中有另一個字段,它將從用戶輸入的字段獲取輸入,並按照我的規範使用CKEditor設置值。

在這兩種情況下,我都需要知道用戶何時完成了對該字段的操作,以便我更新相同或不同的字段。 有什麼建議嗎?

感謝 普拉迪普

回答

1

這樣做無非是呼籲getData事件selectAllremoveFormat命令第一種方式:

CKEDITOR.replace('editor1', { 
    on: { 
     getData: function() { 
      // Save the old selection 
      var ranges = this.getSelection().getRanges(); 

      this.execCommand('selectAll'); 
      this.execCommand('removeFormat'); 

      // Restore the selection 
      this.getSelection().selectRanges(ranges); 
     } 
    } 
}); 

你也可以做到這一點上paste事件,如果你喜歡。請注意,removeFormat可能會破壞您的選擇,編輯器將無法恢復它。

這是一種骯髒的方式,但您可以輕鬆地將change tagsattributes刪除。您也可以使用這一個:config.forcePasteAsPlainText = true;來「解除」粘貼的內容。

但是,要輕柔地做到這一點,你應該讀一點關於。


溫和的做法是:

CKEDITOR.replace('editor1', { 
    on: { 
     instanceReady: function() { 
      this.dataProcessor.htmlFilter.addRules({ 
       attributes: { 
        style: function(attribute) { 
         return false; 
        }, 
        width: function(attribute) { 
         return false; 
        }, 
        height: function(attribute) { 
         return false; 
        }, 
        // ... 
        // You can modify (remove) any attribute you want 
       } 
      }); 
     } 
    } 
}); 

最終,你甚至可以過濾style屬性用正則表達式和刪除一些位,你不喜歡。

+0

花了一些時間閱讀與數據處理器相關的文檔。我會採取第二種方法取得進展。 – user1050134