Ответ 1
Вызовите unbind
с помощью обработчика событий beforeunload
:
$('form#someForm').submit(function() {
$(window).unbind('beforeunload');
});
Чтобы предотвратить отправку формы, добавьте следующую строку:
return false;
У меня есть этот маленький кусок кода:
<script>
$(window).bind('beforeunload', function() {
$.ajax({
async: false,
type: 'POST',
url: '/something'
});
});
</script>
Интересно, как я могу отключить этот запрос, когда пользователь нажимает кнопку отправки.
В принципе что-то вроде здесь, на SO. Когда вы задаете вопрос и решаете закрыть страницу, вы получаете окно с предупреждением, но это не происходит, когда вы отправляете форму.
Вызовите unbind
с помощью обработчика событий beforeunload
:
$('form#someForm').submit(function() {
$(window).unbind('beforeunload');
});
Чтобы предотвратить отправку формы, добавьте следующую строку:
return false;
Использование
$('form').submit(function () {
window.onbeforeunload = null;
});
Удостоверьтесь, что у вас есть это, прежде чем вы начнете отправлять функции! (если есть)
Это то, что мы используем:
В готовом документе мы вызываем функцию beforeunload.
$(document).ready(function(){
$(window).bind("beforeunload", function(){ return(false); });
});
Перед отправкой или location.reload мы отвязаем переменную.
$(window).unbind('beforeunload');
formXXX.submit();
$(window).unbind("beforeunload");
location.reload(true);
Ищете обнаружение onbeforeunload для веб-приложения ASP.NET, я был, Я должен показать предупреждающее сообщение, если какое-либо управление вводом изменяется на странице с помощью ASP.NET с главной страницей и страницами содержимого. Я использую 3 заполнителя содержимого на главной странице, а последний - после формы
<form runat="server" id="myForm">
поэтому после тега закрытия формы и перед тегом закрытия тела этот script
<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().
<!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>
если вы используете связывание, используйте это:
$('form').submit(function () {
$(window).unbind('beforeunload');
});
Это будет хорошо для всех форм отправки.