Как предотвратить onbeforeunload от вызова при нажатии кнопки отправки
Как я могу предотвратить вызов onbeforeunload при нажатии кнопки отправки?
$(document).ready(function()
{
$('input:text,input:checkbox,input:radio,textarea,select').one('change', function()
{
//('BODY').attr('onbeforeunload',"return 'Leaving this page will cause any unsaved data to be lost.';");
if(
window.onbeforeunload = function() { return 'You have unsaved changes!'; }
});
});
Ответы
Ответ 1
Вы не можете предотвратить вызов unbeforeunload, но используя глобальную переменную флага, вы можете контролировать, выводит ли оно предупреждение.
в документе добавьте script:
warn_on_unload = "You have unsaved changes!"
в сообщении, добавьте:
warn_on_unload = "";
определение события, измените на:
window.onbeforeunload = function() { return warn_on_unload; }
через warn_on_unload
, вы можете включить или выключить предупреждающее сообщение по своему усмотрению.
Ответ 2
Вот окончательный код:
$(document).ready(function()
{
var warn_on_unload="";
$('input:text,input:checkbox,input:radio,textarea,select').one('change', function()
{
warn_on_unload = "Leaving this page will cause any unsaved data to be lost.";
$('#submit').click(function(e) {
warn_on_unload = "";});
window.onbeforeunload = function() {
if(warn_on_unload != ''){
return warn_on_unload;
}
}
});
});
Ответ 3
вы можете использовать .on()
для привязки onbeforeunload, а затем использовать .off()
, чтобы отвязать его в представлении формы, коротком и сладком
$(document).ready(function () {
$(window).on('beforeunload', function(){
return "You have unsaved changes!";
});
$(document).on("submit", "form", function(event){
$(window).off('beforeunload');
});
}
Ответ 4
Изменено: теперь игнорирует отправку формы
$(document).ready(function () {
var warn_on_unload = "";
$('input:text,textarea').on('change', function () {
warn_on_unload = "Leaving this page will cause any unsaved data to be lost.";
$("form").submit(function () {
warn_on_unload = "";
});
window.onbeforeunload = function () {
if (warn_on_unload != '') {
return warn_on_unload;
}
}
});
});
Ответ 5
Если вы просто хотите отключить Onbeforeunload Event на кнопке submit.
Итак, вот пример кода
document.getElementById('sub').onsubmit = function(e) {
window.onbeforeunload = null;
return true;
}
Но если вы хотите следить за изменениями форм и предупреждениями (окно подтверждения) перед тем, как покинуть страницу, тогда я вам предложат плагин вот один плагин jquery, который делает именно то, что я написал https://github.com/snikch/jquery.dirtyforms
Плагин Monitior. Формы изменений и предупреждения перед тем, как покинуть страницу
Лучшая часть "Он не будет показывать окно предупреждения при нажатии кнопки" Отправить "или" Отправить форму "
Пример кода: -
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" src="http://cdn.jsdelivr.net/jquery.dirtyforms/2.0.0-beta00006/jquery.dirtyforms.min.js"></script>
<script type="text/javascript">
$(function() {
$('#form_verify').dirtyForms();
})
</script>
<title></title>
<body>
<form id="form_verify" action="a.php" method="POST">
Firt Name <input type="text">
Last Name <input type="file">
<input type="submit">
</form>