2017-07-08 58 views
0

你能告訴我怎麼才能得到表單上的所見即所得的內容提交給相應的textareas?TinyMCE onsubmit不會填充textareas。

我有窗體提交javascript驗證,但當驗證碼觸發編輯器textareas是空的。所以我仍然收到錯誤「Field is required ...」。我不明白TinyMCE如何處理這個問題,但這沒有意義。我的js驗證的事件監聽器位於scritps的盡頭,但textareas仍然是空的。

是否有一些觸發器強制TinyMCE用內容onsubmit填充textareas?

回答

-1

默認情況下,當表單通過標準HTML表單提交提交時,TinyMCE會自動更新底層<textarea>。這是TinyMCE的內置行爲,因爲大多數應用程序不需要保持<textarea>不間斷同步的開銷。

如果不依賴於標準的HTML表單提交事件,你有幾個選項...

當您啓動AJAX表單提交過程:

TinyMCE有一個triggerSave()方法迫使編輯立即與<textarea>同步。

https://www.tinymce.com/docs/api/tinymce/root_tinymce/#triggersave

您可以撥打triggerSave()第一件事,當你的用戶要提交表單,然後執行您的驗證。

TinyMCE的活動:

至於你到你自己的問題的迴應表明你當然可以依賴於各種編輯活動同步通過triggerSave()法編輯器將<textarea>。沒有技術問題,只需知道如果您依賴類似change事件的事件,您可能會觸發大量這類事件。如果您的HTML內容過於龐大或複雜,或者網頁上的許多編輯者經常與底層的<textarea>同步,可能會影響瀏覽器的性能。

哪個更好?

如果您不需要的內容的實時驗證...只是打電話triggerSave()在AJAX提交過程開始時可能更容易(綁在需要的情況下不會TinyMCE的配置代碼),併產生更少瀏覽器的開銷。

如果您需要對內容進行實時驗證...使用類似change事件的事件來同步<textarea>是更好的解決方案。它可能看起來像這樣:

tinymce.init({ 
    selector: "#myTextarea", 
    ... 
    setup: function (editor) { 
     editor.on('change', function() { 
      tinymce.triggerSave(); 
     }); 
    } 
}); 
+0

我只想說這種行爲是唯一的 - 它絕對是用戶(編碼器)不友好的界面。我試圖使用「提交」事件而不是「更改」,但它會造成同樣的問題。我的問題是:爲什麼TinyMCE不支持CONVENTION OVER CONFIGURATION原則,對於不需要驗證內容的用戶(是誰?)或者發出ajax請求,可能會有一些回調觸發triggerSave()。像客戶端驗證這樣重要的事情應該有提交的原生支持。當然,這是文件的明確部分(不是)。 –

+0

@Čamo你可以創建一個演示你如何嘗試使用提交事件?我使用標準表單提交事件來觸發與TinyMCE的交互,而沒有問題。 TinyMCE中沒有「提交」事件,因此您不能使用'editor.on()'API調用提交事件(不存在此類事件)。至於配置公約,我們只是這麼做的 - 你不得不採取任何措施讓TinyMCE模仿標準Web表單中的標準'