确认 asp.net 按钮后发出警报回发

Alert firing postback after confirmation asp.net button

我的 asp.net 应用程序中的 javascript 警报有些奇怪。我有需要从数据库中删除用户的按钮。但是用户可以有证件,也可以有保单。
因此,如果用户有任何文件或政策,我想触发 javascript 警报。该警报将显示“您需要删除文档 and/or 政策。但是如果用户没有任何政策,则需要在您需要选择是否删除的地方触发确认框。
所以我的 .aspx 代码看起来像这样

<asp:Button ID="btnDelete" class="btn btn-danger" runat="server" Text="Izbriši" OnClick="btnDelete_Click" 
                                                                onClientClick="check()">
                                                            </asp:Button>

和函数检查()

function check() {
            var totalRows = $("#<%=gvDocuments.ClientID %> tr").length-1;
            var totalRows1 = $("#<%=gvPolice.ClientID %> tr").length-1;
            if (totalRows > 0 || totalRows1 > 0) {
                alert('Izbrišite ' + totalRows + ' dokumenta i ' + totalRows1 + ' polica klijenta prije nego ga možete izbrisati!');
//Here I check and count is there any documents or policies
                return false;
            }
            else {
                var r = confirm('Jeste li sigurni da želite izbrisati klijenta?')
                if (r == true) {
                    return true;
                }
                else {
                    return false;
                }
            }
        }

所以我的确认块正在运行。你按确定并删除,或取消,它 returns 错误。
但我不知道当用户在 alert 上按下确定时,他会触发回发并删除用户,因此文档和所有内容都保持活动状态,或者据我所知 returns 是真的吗? 谢谢, 此致

在浏览器中检查您的按钮,您会发现 Asp.net 将在您的 onclientclick 代码之后立即执行其 doPostback javascript(在线或在表单提交上)!

因此您的函数调用将 return true/false,然后 doPostback 无论如何都会执行。

您需要做的是像这样处理内联函数的 return:

onClientClick="if(check() === false){return false;}"

只有在此处 return 设置为 false,您才会中断 javascript,并且回发不会触发 :)