我如何确定页面何时存在是因为表单提交?
How can I determine when the page exits is because of form submiting?
这是我的代码:
// confirm alert before close page
window.onbeforeunload = function(evt) {
var el = document.getElementById("qandatextarea");
if( el && el.value && !DontAskBeforeExit){
var message = 'are you sure you want to exit this page?';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
}
return message;
}
}
请关注这一行:
if( el && el.value && !DontAskBeforeExit){
那么有三个条件:
el
: 检查文本区域是否存在于 DOM ?
el.value
:检查该文本区域是否有任何值? (换句话说,那个textarea不是空的吗?)
!DontAskBeforeExit
:它是一个变量,它是0
或1
。当那个textarea的内容存入localStorage时,就是1
,否则就是0
.
好的,现在我还需要一个条件。我需要检查 "is the page submitting or exiting"?我的意思是,如果用户正在发送 post (提交),我不需要显示弹出警报。我该怎么做?
// set a flag so teh function isn't called twice on the form submit
var formsubmitted = false;
document.getElementById('myform').onsubmit = function(evt){
formsubmitted = true;
exitPage(evt, "formsubmit");
};
window.onbeforeunload = function(evt){
// we don't want this to fire twice when the form is submitted
if(!formsubmitted) exitPage(evt, "naturalunload");
}
// added an extra parameter , name, and condition to your original function
function exitPage(evt, exitType) {
var el = document.getElementById("qandatextarea");
if( el && el.value && !DontAskBeforeExit && exitType=="formsubmit"){
var message = 'are you sure you want to exit this page?';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
}
return message;
}
}
这是我的代码:
// confirm alert before close page
window.onbeforeunload = function(evt) {
var el = document.getElementById("qandatextarea");
if( el && el.value && !DontAskBeforeExit){
var message = 'are you sure you want to exit this page?';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
}
return message;
}
}
请关注这一行:
if( el && el.value && !DontAskBeforeExit){
那么有三个条件:
el
: 检查文本区域是否存在于 DOM ?el.value
:检查该文本区域是否有任何值? (换句话说,那个textarea不是空的吗?)!DontAskBeforeExit
:它是一个变量,它是0
或1
。当那个textarea的内容存入localStorage时,就是1
,否则就是0
.
好的,现在我还需要一个条件。我需要检查 "is the page submitting or exiting"?我的意思是,如果用户正在发送 post (提交),我不需要显示弹出警报。我该怎么做?
// set a flag so teh function isn't called twice on the form submit
var formsubmitted = false;
document.getElementById('myform').onsubmit = function(evt){
formsubmitted = true;
exitPage(evt, "formsubmit");
};
window.onbeforeunload = function(evt){
// we don't want this to fire twice when the form is submitted
if(!formsubmitted) exitPage(evt, "naturalunload");
}
// added an extra parameter , name, and condition to your original function
function exitPage(evt, exitType) {
var el = document.getElementById("qandatextarea");
if( el && el.value && !DontAskBeforeExit && exitType=="formsubmit"){
var message = 'are you sure you want to exit this page?';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
}
return message;
}
}