我正在尝试检测输入字段的更改,以便在表单上警告用户未保存的更改。我使用onchange事件记录表单更改。然后,我使用beforeunload窗口事件阻止用户离开页面,如果需要保存。问题是所有主流浏览器上的返回按钮都会让活动输入触发更改事件。如何解决这个问题?
以下是我使用的测试文件。当用户编辑输入字段并立即点击“返回”时,我希望弹出警告。编辑文本,然后单击页面其他位置将会触发更改,但仅此还不够。
starteditor.html
以下是我使用的测试文件。当用户编辑输入字段并立即点击“返回”时,我希望弹出警告。编辑文本,然后单击页面其他位置将会触发更改,但仅此还不够。
starteditor.html
<!doctype html>
<html>
<head>
</head>
<body>
<a href="editor.html">Click me</a>
</body>
</html>
editor.html
<!doctype html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("form").delegate("input", "change", function () { alert("I changed") });
});
</script>
</head>
<body>
Edit text then click the browsers back button.
<form>
<input type="text" />
</form>
</body>
</html>
beforeunload
事件是一个非标准的、仅适用于 Internet Explorer 的事件。 - Nicholas Carey