jQuery входное событие клика перед onbeforeunload? - PullRequest
1 голос
/ 13 июля 2011

Я хотел бы, чтобы моя бизнес-логика в моем обработчике события onbeforeunload возникала только при нажатии на указанный элемент.

У меня есть следующий код (упрощенно):

var myButtonClicked = false;

$(document).ready(function() {
  window.onbeforeunload = myEventHandler;
  $("#myButton").click(function() {
    myButtonClicked = true;

    $("#myform").submit();
  });
});

function myEventHandler(event)
{
  if (myButtonClicked)
  {
    // Do checking.
    // return "Dirty flag..blahblah";
  }
}

В настоящее времяэто приводит к довольно странному поведению - при первом нажатии моей кнопки событие click обрабатывается после myEventHandler.Во второй раз, когда я щелкаю по нему, он обрабатывается заранее (это в FF4.0).

Любая помощь в получении этой работы будет принята с благодарностью.

РЕДАКТИРОВАТЬ: Исправлено.:)

По сути, у меня было два события щелчка;

myButton.click(function() {
  ...
  ignoreFlag = true;
});

myButton.click(function() {
  form.submit();
});

Это всегда было соревнование относительно того, какое событие было запущено первым.Я объединил их, и похоже, что они работают правильно.

Спасибо за вашу помощь ysrb:)

1 Ответ

1 голос
/ 09 января 2012

Это должно помочь .. игнорировать отправку формы

$(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;
        }
    }
});

});

...