我有一个要求,即用户从页面导航而不保存数据,他需要提示警告消息说他没有保存数据。我的页面中有两个链接1. Yahoo和2. Process。当用户点击Yahoo时,需要提示他,但是当用户点击Process时,他不需要提示警告。
下面是一段代码。
<html>
<head runat="server">
<title></title>
<script src="http://localhost/HLC/Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
var hasChanged = false;
$(window).bind("beforeunload", function (e) {
if (hasChanged) {
return "Want to close with out saving data?";
}
});
$(document).ready(function () {
$(':input', document.myForm).bind("change", function () {
hasChanged = true;
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
Name:
<asp:TextBox runat="server" ID="txtName" />
<br />
<a id="redirect" href="http://www.yahoo.com">Click for yahoo.</a>
<asp:Button ID="process" Text="Process" runat="server" />
</div>
</form>
</body>
</html>
答案 0 :(得分:0)
在函数
中使用它 if ($(e.target).attr('id')=="redirect") {
e.preventDefault();
alert("Want to close with out saving data ?");
}
答案 1 :(得分:0)
您无法检查触发beforeunload事件的内容,因为其目标设置为document。 但您可以使用一些标志来决定是否应该显示确认信息:
var hasChanged = false;
var ask = true;
$(window).bind("beforeunload", function (e) {
if (hasChanged && ask) {
return "Want to close with out saving data?";
}
ask = true; // depending on your processing handling you may want to reset this flag
});
$(document).ready(function () {
// bind handler to turn off asking on button click
$('#process').click(function () {
ask = false;
});
$(':input', document.myForm).bind("change", function () {
hasChanged = true;
});
});