Onbeforeload также работает во время отправки [duplicate]

Если вы не инициализировали ссылочный тип и хотите установить или прочитать одно из его свойств, он будет генерировать исключение NullReferenceException.

Пример:

Person p = null;
p.Name = "Harry"; // NullReferenceException occurs here.

Вы можно просто избежать этого, проверив, является ли переменная не нулевой:

Person p = null;
if (p!=null)
{
    p.Name = "Harry"; // Not going to run to this point
}

Чтобы полностью понять, почему выбрано исключение NullReferenceException, важно знать разницу между типами значений и ссылочные типы .

Итак, если вы имеете дело со типами значений, NullReferenceExceptions не может произойти. Хотя вам нужно поддерживать оповещение при работе со ссылочными типами!

Только ссылочные типы, как следует из названия, могут содержать ссылки или буквально буквально ничто (или «нуль»). Если типы значений всегда содержат значение.

Типы ссылок (эти должны быть проверены):

  • динамический
  • объект
  • string

Типы значений (вы можете просто игнорировать эти):

  • Числовые типы
  • Интегральные типы
  • Типы с плавающей запятой
  • decimal
  • bool
  • Пользовательские структуры

20
задан pawelmysior 24 January 2011 в 23:32
поделиться

5 ответов

Вызовите unbind с помощью обработчика события beforeunload:

$('form#someForm').submit(function() {
   $(window).unbind('beforeunload');
});

Чтобы предотвратить отправку формы, добавьте следующую строку:

   return false;
35
ответ дан Dave Jarvis 26 August 2018 в 06:09
поделиться
 <!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>

0
ответ дан Anup Panwar 26 August 2018 в 06:09
поделиться

Использовать

$('form').submit(function () {
    window.onbeforeunload = null;
});

Удостоверьтесь, что у вас есть это перед отправкой функции! (если есть)

18
ответ дан Chris Forrence 26 August 2018 в 06:09
поделиться

Это то, что мы используем:

В готовом документе мы вызываем функцию beforeunload.

$(document).ready(function(){
    $(window).bind("beforeunload", function(){ return(false); });
});

Перед отправкой или location.reload мы отвязаем переменную.

$(window).unbind('beforeunload');
formXXX.submit();

$(window).unbind("beforeunload"); 
location.reload(true);
0
ответ дан David 26 August 2018 в 06:09
поделиться

Ищете для обнаружения onbeforeunload для веб-приложения ASP.NET, я был, я должен показать предупреждающее сообщение, если некоторые изменения ввода управляются на странице с помощью ASP.NET с главной страницей и страницами контента. Я использую 3 заполнителя содержимого на главной странице, а последний - после формы

<form runat="server" id="myForm">

, поэтому после тега закрытия формы и перед тегом закрытия тела этот скрипт использовал

<script>
        var warnMessage = "Save your unsaved changes before leaving this page!";
        $("input").change(function () {
            window.onbeforeunload = function () {
                return 'You have unsaved changes on this page!';
            }
        });
        $("select").change(function () {
            window.onbeforeunload = function () {
                return 'You have unsaved changes on this page!';
            }
        });
        $(function () {
            $('button[type=submit]').click(function (e) {
                window.onbeforeunload = null;
            });
        });
    </script>

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

, чтобы я работал так, как этот bind и unbind не сработали для меня. С jQuery 1.7 с обновлением API событий был изменен .bind () /. Unbind () все еще доступны для обратной совместимости, но предпочтительным методом является использование функций on () / off ().

0
ответ дан dnxit 26 August 2018 в 06:09
поделиться
Другие вопросы по тегам:

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