Как я могу препятствовать тому, чтобы onbeforeunload был назван при нажатии на кнопку отправки?
$(document).ready(function()
{
$('input:text,input:checkbox,input:radio,textarea,select').one('change', function()
{
//('BODY').attr('onbeforeunload',"return 'Leaving this page will cause any unsaved data to be lost.';");
if(
window.onbeforeunload = function() { return 'You have unsaved changes!'; }
});
});
Вы не можете предотвратить вызов unbeforeunload, но используя переменную с глобальным флагом, вы можете контролировать, выдает ли она предупреждение.
в документе, добавить скрипт:
warn_on_unload = "You have unsaved changes!"
в событие submit, добавить:
warn_on_unload = "";
определение события, изменить на:
window.onbeforeunload = function() { return warn_on_unload; }
через warning_on_unload
, теперь вы можете включить или выключить предупреждение по своему усмотрению.
Вот окончательный код:
$(document).ready(function()
{
var warn_on_unload="";
$('input:text,input:checkbox,input:radio,textarea,select').one('change', function()
{
warn_on_unload = "Leaving this page will cause any unsaved data to be lost.";
$('#submit').click(function(e) {
warn_on_unload = "";});
window.onbeforeunload = function() {
if(warn_on_unload != ''){
return warn_on_unload;
}
}
});
});