我在这里找到了一个 JQuery Alert 插件,http://www.abeautifulsite.net/blog/2008/12/jquery-alert-dialogs/ 所以我制作了一个示例页面来测试它,但它似乎不适用于 Runat="server"按钮。第二个按钮只是我试图阻止按钮回发的东西,它似乎可以做到这一点,但在确认后,它不会去任何地方。
如果有任何帮助,我将不胜感激。
<script src="js/jquery.alerts.js" type="text/javascript"></script>
<link href="css/jquery.alerts.css" rel="stylesheet" type="text/css" media="screen" />
<script type="text/javascript">
function confirmThis() {
jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {
jAlert('Confirmed: ' + r, 'Confirmation Results');
return r;
});
return false;
}
$(document).ready(function () {
$("#btnNext").click(function () {
jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {
jAlert('Confirmed: ' + r, 'Confirmation Results');
return r;
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnNext" runat="server" Text="Confirm 1"/>
<asp:Button ID="Button1" runat="server" Text="Confirm 2" OnClientClick="return confirmThis();"/>
</div>
</form>
</body>
</html>
最佳答案
虽然您应该使用btnNext.ClientID
,但这不是您出现问题的原因。问题是您正在使用的库使用回调来实现确认弹出窗口,这意味着您附加到 click
事件的函数不会等待单击确认对话框后再退出。由于该函数未返回 false
,因此不会取消按钮单击并发生回发。
请参阅此处已接受的答案以获取更多信息: Can you wait for javascript callback?
解决此问题的一种方法是始终返回 false,然后在确认回调中单击按钮。请记住,在手动调用 click
之前,您必须取消绑定(bind)
事件处理程序。以下代码对我有用:
$(document).ready(function () {
$("#<%= btnNext.ClientID %>").bind('click', function () {
jConfirm('Can you confirm this?', 'Confirmation Dialog', function (r) {
if (r == true) {
//Unbind client side click event and submit btnNext
$("#<%= btnNext.ClientID %>").unbind('click');
$("#<%= btnNext.ClientID %>").click();
}
});
//Always prevent a postback by returning false
return false;
});
});
关于jquery - 在 ASP.Net Runat ="server"按钮上使用 JQuery Alert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526796/