Как найти объект отправителя в событии beforeunload, используя jQuery? - PullRequest
0 голосов
/ 21 февраля 2012

У меня есть требование, когда пользователь перемещается со страницы без сохранения данных, ему нужно получить предупреждение с сообщением о том, что он не сохранил данные. У меня есть две ссылки на моей странице 1. Yahoo и 2. Процесс. Когда пользователь нажимает на Yahoo, ему нужно получить запрос, но когда пользователь нажимает на Process, ему не нужно получать предупреждение.

Ниже приведен фрагмент кода.

<html>
<head runat="server">
<title></title>
<script src="http://localhost/HLC/Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
    var hasChanged = false;
    $(window).bind("beforeunload", function (e) {
        if (hasChanged) {
            return "Want to close with out saving data?";
        }
    });

    $(document).ready(function () {
        $(':input', document.myForm).bind("change", function () {
            hasChanged = true;
        });
    });
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
    Name:
    <asp:TextBox runat="server" ID="txtName" />
    <br />
    <a id="redirect" href="http://www.yahoo.com">Click for yahoo.</a>
    <asp:Button ID="process" Text="Process" runat="server" />
</div>
</form>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 21 февраля 2012

Вы не можете проверить, что вызвало событие до загрузки, потому что его цель установлена ​​на документ. Но вы можете использовать некоторый флаг, чтобы решить, показывать ли вам подтверждение:

var hasChanged = false;
var ask = true;

$(window).bind("beforeunload", function (e) {
    if (hasChanged && ask) {
        return "Want to close with out saving data?";
    }
    ask = true; // depending on your processing handling you may want to reset this flag
});

$(document).ready(function () {
    // bind handler to turn off asking on button click
    $('#process').click(function () {
        ask = false;
    });  

    $(':input', document.myForm).bind("change", function () {
        hasChanged = true;
    });
});
0 голосов
/ 21 февраля 2012

Используйте это внутри функции

    if ($(e.target).attr('id')=="redirect") {
        e.preventDefault();
        alert("Want to close with out saving data ?");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...