[js]var original = {};
var submitFocus = 0;
function leavePage() {
var unsavedChanges = 0;
if (!submitFocus) {
jQuery("table input").each(function() {
if (original[this.name] != this.value) {
unsavedChanges = 1;
}
});
}
if (unsavedChanges) {
return "There are unsaved changes on this page that will be lost.";
}
}
jQuery(function() {
var colorpicker = jQuery.farbtastic("#colorpicker");
var colorFields = jQuery(".color-field");
colorFields.each(function () {
colorpicker.linkTo(this);
}).focus(function() {
colorpicker.linkTo(this);
jQuery("#colorpicker").show();
});
colorFields.blur(function() {
jQuery("#colorpicker").hide();
});
jQuery("table input").each(function() {
original[this.name] = this.value;
});
var submitButton = jQuery("input[type=submit]");
submitButton.mouseover(function() {
submitFocus = 1;
});
submitButton.mouseout(function() {
submitFocus = 0;
});
submitButton.focus(function() {
submitFocus = 1;
});
submitButton.blur(function() {
submitFocus = 0;
});
window.onbeforeunload = leavePage;
});[/js]
Имам една форма за настройки и с горния скрипт кеширам съдържанието на всички input-и, и го запазвам в обекта original. След това при излизане от страницата е зададено да изпълни функцията leavePage(), която сравнява първоначалните стойности на input-ите и стойностите им при напускането на страницата, за да провери дали има незапазени промени. Ако има незапазени промени излиза диалогов прозорец за потвърждение на излизането от страницата.
Тъпото е, че ако направя промени и просто натисна submit бутона, скриптът пак отчита, че излизам от страницата и показва съобщението. За да предотвратя това съм направил при фокус или hover на submit бутона, да записва 1 в променливата submitFocus и при излизане ако променливата е 1, а не 0, съобщението не излиза.
Обаче така нещо не ме кефи скрипта и се чудя за някакъв по-добър начин как да разбера дали излиза от страницата чрез submit бутона или по друг начин. Ако се сетите някакъв друг начин, споделете.
var submitFocus = 0;
function leavePage() {
var unsavedChanges = 0;
if (!submitFocus) {
jQuery("table input").each(function() {
if (original[this.name] != this.value) {
unsavedChanges = 1;
}
});
}
if (unsavedChanges) {
return "There are unsaved changes on this page that will be lost.";
}
}
jQuery(function() {
var colorpicker = jQuery.farbtastic("#colorpicker");
var colorFields = jQuery(".color-field");
colorFields.each(function () {
colorpicker.linkTo(this);
}).focus(function() {
colorpicker.linkTo(this);
jQuery("#colorpicker").show();
});
colorFields.blur(function() {
jQuery("#colorpicker").hide();
});
jQuery("table input").each(function() {
original[this.name] = this.value;
});
var submitButton = jQuery("input[type=submit]");
submitButton.mouseover(function() {
submitFocus = 1;
});
submitButton.mouseout(function() {
submitFocus = 0;
});
submitButton.focus(function() {
submitFocus = 1;
});
submitButton.blur(function() {
submitFocus = 0;
});
window.onbeforeunload = leavePage;
});[/js]
Имам една форма за настройки и с горния скрипт кеширам съдържанието на всички input-и, и го запазвам в обекта original. След това при излизане от страницата е зададено да изпълни функцията leavePage(), която сравнява първоначалните стойности на input-ите и стойностите им при напускането на страницата, за да провери дали има незапазени промени. Ако има незапазени промени излиза диалогов прозорец за потвърждение на излизането от страницата.
Тъпото е, че ако направя промени и просто натисна submit бутона, скриптът пак отчита, че излизам от страницата и показва съобщението. За да предотвратя това съм направил при фокус или hover на submit бутона, да записва 1 в променливата submitFocus и при излизане ако променливата е 1, а не 0, съобщението не излиза.
Обаче така нещо не ме кефи скрипта и се чудя за някакъв по-добър начин как да разбера дали излиза от страницата чрез submit бутона или по друг начин. Ако се сетите някакъв друг начин, споделете.