首先,我是Web表单和JavaScript的新手,我花了两天时间用谷歌搜索没有结果。我想在用户退出页面之前询问用户是否要保存他们输入的数据。我有一个文本框,告诉我是否已经执行了任何应该触发javascript if语句的输入。如果用户使用页面中包含的控件离开页面,我的代码将正常工作。单击右上角的X或选择文件/退出时,它无法正常工作。以下是我的代码。
<script type="text/javascript" >
var needToConfirm = "False";
var hdnNeedToConfirm = ""
window.onbeforeunload = confirmExit;
function confirmExit() {
__doPostBack('<%= Page.Master.FindControl("MainContent").FindControl("PADForm").ClientID %>', '');
__doPostBack('<%= Page.Master.FindControl("MainContent").FindControl("HiddenPanel").ClientID %>', '');
hdnNeedToConfirm = document.getElementById('<%= Page.Master.FindControl("MainContent").FindControl("HdnNeedToConfirm").ClientID %>');
if (hdnNeedToConfirm != null)
needToConfirm = hdnNeedToConfirm.value;
else
needToConfirm = "False";
if (needToConfirm == "True")
window.open("SaveOrLose.aspx");
}
</script>
我在上面的代码中有两个__dopostback语句,但是在其余代码发布之后,回发实际上并没有发生。这意味着if语句失败,因此永远不会打开Save表单。
我很感激你能给予的任何帮助!!
答案 0 :(得分:0)
您不应该从代码中调用__doPostBack()
。
这是一个只能由ASP.NET Web Forms调用的函数来调用服务器端事件/代码。
如果您检查__doPostBack()
函数的实现,您会注意到它提交了一个HTML表单。
因此,您的程序永远不会达到第二次调用__doPostBack()
的程度。