2017-01-16 5 views
0

나는 퀴즈를 만들고 있습니다. 양식을 제출하기 전에 페이지를 닫을 수 없습니다. 그렇지 않으면 모든 데이터가 손실됩니다. 다음을 사용하여 수행 할 수 있습니다.window.onbeforeunload 제출을 클릭하지 않은 경우 확인

window.onbeforeunload = function() { 
    return "Are you sure?" 
} 

그러나 사용자가 "제출"을 클릭 한 경우이 경고를 트리거하지 않으려면 어떻게해야합니까? 아래 코드를 시도했지만 전혀 작동하지 않습니다. 창을 닫더라도 경고를 표시하지 않습니다.

var clicked_submit = false; 
$(document).ready(function() { 
     $('#submit-button').click(function() { 
      clicked_submit = true; 
     }); 

     window.onbeforeunload = function() { 
      if (clicked_submit){ 

      } else { 
       return 'Are you sure?' 
      } 
     } 
    }); 
+0

'False! == false'와'True! == true '또한 처리기의 메시지가 브라우저에 따라 다르지만 일부 브라우저에서는이를 무시합니다. – Teemu

+1

대신 다른 경우, 당신은 할 수 simplay 할 수없는 경우 : if (! ... 또한, 당신은 window.onbeforeunload = null을 재정의 할 수 있습니다;) 코드를 쉽게 만드는 –

답변

1

간단한 해결책 중 하나는 아무 값도없이 함수를 반환하는 것입니다.

var clicked_submit = false; 
$(document).ready(function() { 
     $('#submit-button').click(function() { 
      clicked_submit = true; 
     }); 
     window.onbeforeunload = function() { 
     if (clicked_submit){ 
      return; // equal to return undefined; 
     } else { 
      return 'Are you sure?' 
     } 
    } 
}); 

청소기 해결책이 될 것이다는 단순히 nullwindow.onbeforeunload을 설정합니다.

var clicked_submit = false; 
$(document).ready(function() { 
     $('#submit-button').click(function() { 
      clicked_submit = true; 
     }); 
     if(!clicked_submit) { 
      window.onbeforeunload = function() { 
       return 'Are you sure?' 
      } 
     } else { 
      window.onbeforeunload = null; 
     } 
}); 
+0

그건 내 잘못이야 - 거짓, 진정한 파이썬 있습니다. 감사합니다 Logged –