允许在ASP.NET Framework上的特定按钮上使用Javascript Onbeforeunload函数
Allowing the Javascript Onbeforeunload Function on the specific button on ASP.NET Framework
如何在特定按钮上设置Onbeforeunload函数?例如,我有3个按钮。
<div>
<asp:Button ID="btnBack" runat="server" Text="Back" CssClass="po-font" Height="30px"/>
<asp:Button ID="btnSumbit" runat="server" Text="Submit" CssClass="po-font" Height="30px"/>
<asp:Button ID="btnSaveToDraft" runat="server" Text="Save To Draft" CssClass="po-font" Height="30px"/>
</div>
在javascript上,我做了一些类似的事情:
<script type="text/javascript">
window.onbeforeunload = confirmExit;
function confirmExit()
{
return "Are you sure you want to leave this page? Any unsaved progress will be lost";
}
</script>
虽然该功能可以正常工作,但我想在一个特定的按钮中指定该功能,可能是在"返回"按钮上。我做了类似的事。
<script type="text/javascript">
function confirmExit()
{
return "Are you sure you want to leave this page? Any unsaved progress will be lost";
}
$('#btnBack').live('click', function () {
window.onbeforeunload = confirmExit;
});
</script>
但是Id不起作用。如何做到这一点?有什么想法吗?我只想触发指定按钮上的功能。帮帮我。
使用$('<%=btnBack.ClientID%>').click(function(){...});
,因为asp.net在其自己的客户端前面加上控件id,html呈现的id可能看起来像ct100$btnBack。
首先,ID不太可能是正确的,因为ASP.NET在ID前面加上容器(如果是该对象)。要么给btnBack
一个类并使用它,要么:
$("[id$='btnBack']").on("click",...)
当我回到我的电脑前时,我将使用经过战斗测试的版本进行编辑
*编辑以添加经过战斗测试的代码*
因此,您需要将卸载事件绑定到window
,不能像Kevin在回答中所说的那样为其分配函数。如果你只想让它为一个特定的按钮触发,下面的代码是我在活动生产中使用的东西(它还有一些检查,并在触发之前检查页面上是否有任何更改…),所以应该对你有效:
if (self == top) { // Check we're not in an iFrame or colorbox
$(window).bind("beforeunload", function (event) { // bind the window unload event
if (backLinkClicked) { // Check if the back link has been clicked, if so prompt
return "Are you sure you want to leave this page? Any unsaved progress will be lost";
};
});
}
然后您的click
处理程序:
var backLinkClicked = false;
$("[id$='btnBack']").click(function() { backLinkClicked = true });
因此,后退按钮单击处理程序只需更改变量即可在卸载时触发提示。
首先,您应该理解onbeforeunload是一个事件,通过放入:
window.onbeforeunload = confirmExit;
您正在将一个事件处理程序附加到窗口,它将是全局的。
若我是对的,那个么当用户试图通过点击按钮导航离开时,您想要的是打开一个确认对话框。我建议你试试这个:
$('#<%=btnBack.ClientID%>').on('click', function (e) {
// check if user clicked cancel
if (!confirm("Are you sure [...]") {
e.stopImmediatePropagation();
e.preventDefault();
return false;
}
});
这样,当用户单击按钮时,将出现一个确认对话框(confirm())。如果用户单击cancel,代码将调用stopImmediatePropagation()(这将阻止其他JS事件处理程序运行)和preventDefault()(这会在单击按钮时禁用默认操作,例如提交表单)。
我自己还没有测试过,但我想它应该有效。
- 复制当前url按钮-Javascript
- 通过提示中的循环触发iFrame中的输入按钮(JavaScript)
- 在单击按钮时激活按钮的悬停状态,直到单击另一个按钮(Javascript/JQuery)
- 从导航按钮 JavaScript 中删除动画
- IE8中的FB共享按钮Javascript错误
- 表单验证上的彩色单选按钮-Javascript
- 通过一个按钮JAVASCRIPT更改style.display在多个对象上的显示
- 变暗图像滑块/按钮 - Javascript
- 下载pdf/word按钮javascript /jquery
- 带有单选按钮 JavaScript 的随机测验
- C# Web 浏览器 - 如何单击此按钮 (Javascript)
- 获取按钮 Javascript 的宽度,不带“px”
- 自动点击提交按钮 javascript
- 保存和关闭按钮 javascript
- 使用按钮 javascript 在 forloop 中创建 Cookie
- 搜索下一个按钮 javascript
- 保存状态单选按钮javascript html
- 使用类型按钮javascript提交表单
- 点击提交按钮Javascript HTML后显示表格数据
- 使用%用单按钮JavaScript函数交换图像