2011-01-12 2 views
2

Я использую событие jquery onbeforeunload в приложении asp.net. Если я записываю событие, как указано ниже, то его рабочий тон и дисплей подтверждают диалоговое окно.Помощь в jQuery для события onbeforeunload

var vGlobal = true; 
var sMessage = "Leaving the page will lost in unsaved data!"; 

[Рабочая]

> window.onbeforeunload = function() { 
> if (vGlobal == false) return 
> sMessage; } 

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

[Не работает]

$(window).bind("beforeunload", function(e) { 
    if (vGlobal == false) 
     return sMessage; 
}); 

Кто-нибудь предложить мне, почему его не работает. Есть ли разница между этими двумя методами.

Код на ASPX:

<asp:TextBox ID="txtName" runat="server"></asp:TextBox> 

CLICK ON THIS LINK TO SEE RUNNING EXAMPLE

ответ

1

Смотрите updated version

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

+0

Благодаря Рахул для задачи reply.Actually было то, что я использовал JQuery версии 1.3.2.Now я получил v1.4.4 и его работу fine.One more question У нас есть запись во весь код jquery внутри функции $ (document) .ready? Это необходимо? – Sukhjeevan

0

Помимо того факта, что vGlobal является true, и вы проверяете if (vGlobal == false), это пахнет проблемой $ (document) .ready().

I.e. Вы должны поместить объявление внутри обработчика document.ready(), как показано здесь:

$(document).ready(function(){ 
    $(window).bind("beforeunload", function(e) { 
     if (vGlobal == false) 
      return sMessage; 
    }); 
}); 
0

Там нет никакой выгоды в использовании JQuery привязать событие к окну - все, что вы делаете, это добавление накладных расходов, имеющим JQuery проанализируйте окно в объект jQuery, который вы даже не используете.

Поэтому, используя:

window.onbeforeunload = handler; 

предпочтительнее с помощью JQuery, чтобы связать это событие.

Вы все еще можете выполнить связывание внутри документа готовый раздел:

$(document).ready(function() { 
    window.onbeforeunload = handler; 
}; 
+4

На самом деле, есть преимущество в использовании jQuery. Если есть несколько объявлений '$ (window) .bind (« event »...», то вызовы функций укладываются в стек. 'Window.onbeforeunload = handler;' будет просто заменять все, что изначально было там. –

+0

Но нет несколько обработчиков событий в этом сценарии - и если бы вы все еще могли обернуть все функции в одном обработчике событий, значит, на самом деле нет никакой пользы. – Fenton

Смежные вопросы