我有一個內嵌 WYSIWYG 文字編輯器的網站,
而且我還有一個"在跳出的時候詢問是否繼續or存成草稿"的功能,
所以我需要檢查summernote裡面的內容是否被更改,
我的想法是:檢查文章的標題和文本是否被更改。
流程如下:
使用者輸入內容或不輸入任何內容。
使用者點擊另一個超連結 / 按鈕(就是任何可能會帶離原網站的link)。
檢查文章的標題和內文是否已更改。
3-1. 如果內文已更改,系統將提醒用戶"內容已更改,您真的要不保存就離開嗎?"
3-2. 如果內文沒有更改,系統會直接讓使用者去他點擊的地方。
如果標題或內文其中之一被更改,系統都會提醒使用者。
現在我完成了檢查標題的功能,但在相同的結構下,我無法實現檢查內文。
這是代碼:
$('textarea,input').on('keypress change input', function() {
changes = true;
});
$('form').on('submit', function () {
changes = false;
});
$(window).on('beforeunload', function () {
if (changes) return "Do you really want to leave?";
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="form-control" id="fileName" placeholder="請輸入名稱" maxlength="8"><br>
<textarea name="text" class="TextEditor2" id="rule-text"></textarea>
因為input可以直接使用 keypress change input 這三個來判斷是否修改過,
所以我認為textarea照理來說也應該要可以用這種方式才對,
但目前似乎是無法,我猜測是因為使用WYSIWYG的關係,麻煩各位大神給一點方向了!
一些編輯器是採用內框架的關係。所以你無法直接去偵測控制鍵盤。
不過一般來說,如果你是用對應編輯器套件的話。
理論上你該去找它的對應事件來處理才對。
然後再利用backcall的處理方式來應用就好。