jquery - 在 ASP.Net Runat ="server"按钮上使用 JQuery Alert

标签 jquery asp.net jquery-ui-dialog alert

我在这里找到了一个 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/

相关文章:

jquery - 将 jQuery 对话框中心定位在移动设备问题上

jquery - 从 jQuery 到 Spring boot MVC 的 POST 需要用户凭据

javascript - jQuery UI 对话框从缓存中选择标题

javascript - Jquery函数在整个页面上显示加载图标

jquery - 删除列表中最后一项的边距

asp.net - Azure DevOps 构建/发布管道转换

c# - 具有 HttpContext.Current.User.Identity.IsAuthenticated 的 Webmethods 在 Azure 上不活动后停止工作

当存在滚动条时,jQuery UI 模式对话框背景不会使页面背景底部变暗

JavaScript - 延迟一组 setTimeout 事件

javascript - 使用 CSS transform 属性使元素响应