2012-03-01 122 views
1

我有以下功能,當訪問者點擊「取消」或嘗試返回填充文本框時顯示提醒。該功能完美工作,但不是當我點擊提交時。當我按下按鈕時,警報就會顯示,我不想那樣。當提交時不顯示onbeforeunload提醒

var changed_flag = 0; 

$('input').change(function() { 
    changed_flag = 1; 
}); 

window.onbeforeunload = function() { 
    if(changed_flag) { 
     return 'You haven't saved your work!' 
    } 
}; 

我知道我應該編輯$('input').change(...,並添加input[type="submit"]但我不知道如何以及在何處。有誰知道我可以如何解決這個問題?

在此先感謝。

回答

2

嘗試

$('form').submit(function() { 
    changed_flag = 0; 
}); 
+0

非常感謝! :)問題現在已經解決了! – Erik 2012-03-01 01:02:09

+0

感謝您複製我的答案,而不是提交評論。 – 2012-03-01 03:13:24

0
$('form').submit(function() { 
    $(window).unbind('beforeunload'); 
}); 

的或者代替解除綁定,你可以只是changed_flag = 0

+0

這個功能並沒有在所有的工作:/我如何添加'changed_flag = 0'呢? – Erik 2012-03-01 00:49:09

+1

@Erik:在'submit'事件處理程序中放置'changed_flag = 0;',就像'change'事件處理程序中的'changed_flag = 1;'一樣。 – 2012-03-01 00:54:41

+0

@FelixKling:像這樣:'...(function(){changed_flag = 0});'? – Erik 2012-03-01 00:55:41

0

只要有你的提交按鈕,刪除該事件或設置changed_flag回到0

<input type="submit" onmousedown="changed_flag = 0" /> 

編輯:關於第二個想法把這個代碼在您的onsubmit處理程序中,以防其他方式提交表單(如按Enter或通過其他函數)。

+0

不好的做法,把事件處理程序放在你的html標籤,這不會像按Enter鍵提交表格 – 2012-03-01 00:46:43