問題 :編輯好的頁面信息,忘記點擊提交按鈕,直接刷新界面導致數據未提交直接清空,仍需再重新填寫問題。
解決方案:onbeforeunload 事件在即將離開當前頁面(刷新或關閉)時觸發
實例:
<body onbeforeunload="return myFunction()">
onbeforeunload=“return true“ 無彈框提醒
onbeforeunload=“return false“ 彈框提醒
定義語法:
onbeforeunload 事件在即將離開當前頁面(刷新或關閉)時觸發。
該事件可用於彈出對話框,提示用戶是繼續瀏覽頁面還是離開當前頁面。
對話框默認的提示信息根據不同的瀏覽器有所不同,標准的信息類似 "確定要離開此頁嗎?"。該信息不能刪除。
思路:
- 根據以上信息可得出,onbeforeunload 只要返回為 false 就顯示提示信息
- 默認onbeforeunload 返回為 true點擊刷新不顯示任何提示
- 監聽該頁面輸入事件,當監聽到該頁面無任何數據改動時,刷新當前頁面不做任何提示。
- 監聽到只要有一個文本發生變化,就設置為false。
關鍵 代碼:
<script> //顯示提示框 var isShow = true; function exitPrompt() { if (!isShow) { return false; } } //改變保存狀態為false換頁面要提示 function ChangeStateFalse() { isShow = false; } //改變保存狀態為true不提示 function ChangeStateTrue() { isShow = true; } /** * 監聽-所有可能改動的文本內容 包括input ,textarea,ue富文本,只要監聽到有編輯文本的行為,就可視位需要有彈框提示 * 編輯或添加頁面加載時就要加載該方法 */ function eventListenFormChange(){ $("input").each(function () {
//數據改變事件,只要數據變動就觸發當前事件,改變isShow為false $(this).bind('input propertychange',function(e){ ChangeStateFalse() //console.log($(this).val()) //調試時使用-可刪除 }) }) $("textarea").each(function () { $(this).bind('input porpertychange',function(){ ChangeStateFalse() // console.log($(this).val()) }); }) // env.ueditor 為ue地址 可改為你的ue地址 UE.getEditor('content',{}) env.ueditor.addListener("keyup",function(){ ChangeStateFalse() //var arr =(UE.getEditor('content').getContentTxt()); // console.log(arr) }) } </script> <body onbeforeunload="return exitPrompt()" >
效果圖: