Edit this page form and left when prompted to do (jQuery)

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$.fn.enable_changed_form_confirm = function () {
var _f = this;
$(':text, :password, textarea', this).each(function() {
$(this).attr('_value', $(this).val());
});
 
$(':checkbox, :radio', this).each(function() {
var _v = this.checked ? 'on' : 'off';
$(this).attr('_value', _v);
});
 
$('select', this).each(function() {
$(this).attr('_value', this.options[this.selectedIndex].value);
});
 
$(this).submit(function() {
window.onbeforeunload = null;
});
 
window.onbeforeunload = function(_f) {
if(is_form_changed(_f)) {
return "You will lose any unsaved content.";
}
}
}
 
function is_form_changed(f) {
var changed = false;
$(':text, :password, textarea', f).each(function() {
var _v = $(this).attr('_value');
if(typeof(_v) == 'undefined') _v = '';
if(_v != $(this).val()) changed = true;
});
 
$(':checkbox, :radio', f).each(function() {
var _v = this.checked ? 'on' : 'off';
if(_v != $(this).attr('_value')) changed = true;
});
 
$('select', f).each(function() {
var _v = $(this).attr('_value');
if(typeof(_v) == 'undefined') _v = '';
if(_v != this.options[this.selectedIndex].value) changed = true;
});
return changed;
}
 
$(function() {
$('form').enable_changed_form_confirm();
});

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

No comments yet.

Leave a comment

(required)

(required)