To alert for unsaved changes in form with JavaScript, we can track changes done to inputs in a form.
Then we can set the window.onbeforeunload
property to a function that checks the changing state of the input and returns an alert message if there’re changes.
For instance, if we have:
<div id="app">
<input />
</div>
Then we can write the following JavaScript to track whether the input value has changed and shows the alert when the user leaves the page when there’re changes made:
let unsaved = false;
const input = document.querySelector("input");
input.addEventListener("change", () => {
unsaved = true;
});
const unloadPage = () => {
if (unsaved) {
return "You have unsaved changes on this page.";
}
};
window.onbeforeunload = unloadPage;
We have the unsaved
variable, which we set to true
in the change
event listener of the input that we added with input.addEventListener
.
And then we have the unloadPage
function that checks if unsaved
is true
.
If it is, then we return a string that triggers the alert when we set the function as the value of window.onbeforeunload
.
The message can’t be changed, so we can return any string.
onbeforeunload
runs when we leave the page.