【发布时间】:2018-12-11 06:14:12
【问题描述】:
在搜索未保存更改时在离开网页前警告用户的方法时,我找到了这个解决方案:https://stackoverflow.com/a/48238659/9512437,但即使用户点击保存按钮也会弹出警告。我尝试在用户单击提交按钮时添加一个事件以设置一个变量以防止出现警告,但现在警告永远不会出现。
这是我尝试过的:
<script>
"use strict";
var btn_click = false;
(() => {
const modified_inputs = new Set;
const defaultValue = "defaultValue";
// store default values
addEventListener("beforeinput", (evt) => {
const target = evt.target;
if (!(defaultValue in target || defaultValue in target.dataset)) {
target.dataset[defaultValue] = ("" + (target.value || target.textContent)).trim();
}
});
// detect input modifications
addEventListener("input", (evt) => {
const target = evt.target;
let original;
if (defaultValue in target) {
original = target[defaultValue];
} else {
original = target.dataset[defaultValue];
}
if (original !== ("" + (target.value || target.textContent)).trim()) {
if (!modified_inputs.has(target)) {
modified_inputs.add(target);
}
} else if (modified_inputs.has(target)) {
modified_inputs.delete(target);
}
});
addEventListener("beforeunload", (evt) => {
if (modified_inputs.size && !btn_click) {
const unsaved_changes_warning = "Changes you made may not be saved.";
evt.returnValue = unsaved_changes_warning;
return unsaved_changes_warning;
}
});
addEventListener("")
})();
document.getElementById("submit").onclick = function save() {
btn_click = true;
}
</script>
知道我做错了什么吗?
【问题讨论】:
-
保存时是否清除了修改后的输入集?我在这里看不到它,但如果你不是,那将是罪魁祸首。
-
由于我没有使用 AJAX,我认为我不需要(如果我错了,请纠正我)。我最终在发布后就弄清楚了(尽管我仍然不能 100% 确定到底是什么导致了问题)。
标签: javascript