問題 :編輯好的頁面信息,忘記點擊提交按鈕,直接刷新界面導致數據未提交直接清空,仍需再重新填寫問題。
解決方案: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()" >
效果圖:

