Sometimes, you need to check whether the user has modified the contents of a form. You can use the following technique. If the contents of the form have been modified, it will return true, and if the contents of the form have not been modified, it will return false. The code is as follows:
function formIsDirty(form) {
for (var i = 0; i < form.elements.length; i ) {
var element = form.elements[i];
var type = element.type;
if (type == "checkbox" || type == "radio") {
if (element.checked != element.defaultChecked) {
return true;
}
}
else if (type = = "hidden" || type == "password" || type == "text" || type == "textarea") {
if (element.value != element.defaultValue) {
return true ;
}
}
else if (type == "select-one" || type == "select-multiple") {
for (var j = 0; j < element. options.length; j ) {
if (element.options[j].selected != element.options[j].defaultSelected) {
return true;
}
}
}
}
return false;
}
window.onbeforeunload = function(e) {
e = e || window.event;
if (formIsDirty(document.forms[" someForm"])) {
if (e) {
e.returnValue = "You have unsaved changes.";
}
return "You have unsaved changes.";
}
};