iT邦幫忙

0

WYSIWYG summernote 文字編輯器獲取 keypress change input 事件

  • 分享至 

  • xImage

我有一個內嵌 WYSIWYG 文字編輯器的網站,

而且我還有一個"在跳出的時候詢問是否繼續or存成草稿"的功能,

所以我需要檢查summernote裡面的內容是否被更改,

我的想法是:檢查文章的標題和文本是否被更改。

流程如下:

  1. 使用者輸入內容或不輸入任何內容。

  2. 使用者點擊另一個超連結 / 按鈕(就是任何可能會帶離原網站的link)。

  3. 檢查文章的標題和內文是否已更改。

 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的關係,麻煩各位大神給一點方向了!

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2021-08-31 08:46:47
最佳解答

一些編輯器是採用內框架的關係。所以你無法直接去偵測控制鍵盤。

不過一般來說,如果你是用對應編輯器套件的話。
理論上你該去找它的對應事件來處理才對。
然後再利用backcall的處理方式來應用就好。

非常感謝您提供寶貴的意見,我會試試看,謝謝您!

@㊣浩瀚星空㊣ 大大您好,謝謝您的解答,我已成功找出方法!

我要發表回答

立即登入回答