Как препятствовать тому, чтобы 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!'; }

  });

 });
13
задан Pekka supports GoFundMonica 29 December 2009 в 09:28
поделиться

2 ответа

Вы не можете предотвратить вызов unbeforeunload, но используя переменную с глобальным флагом, вы можете контролировать, выдает ли она предупреждение.

в документе, добавить скрипт:

warn_on_unload = "You have unsaved changes!"

в событие submit, добавить:

warn_on_unload = "";

определение события, изменить на:

window.onbeforeunload = function() { return warn_on_unload; }

через warning_on_unload, теперь вы можете включить или выключить предупреждение по своему усмотрению.

8
ответ дан 1 December 2019 в 22:07
поделиться

Вот окончательный код:

$(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;
            }   
        }
    });
});
7
ответ дан 1 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: