如何取消由按下按钮栏引起的提交事件

本文关键字:按钮 事件 提交 何取消 取消 | 更新日期: 2023-09-27 18:00:03

我使用的是ASP数据网格,并且我有一个ButtonColumn。当按钮呈现到页面时,它是提交类型的输入。所以这是一个提交按钮。该按钮用于删除记录。但是我想要一些javascript来确认用户想要删除记录。我遇到的问题是,即使我从confirm方法返回false,提交事件仍然会发生。。。

以下是为点击事件分配javascript方法的服务器端代码:

Button deleteButton = e.Item.Cells[6].Controls[0] as Button;
if (deleteButton != null)
{
    deleteButton.OnClientClick = "confirmDelete()";
}

以下是创建数据网格的ASP.net代码:

<asp:DataGrid 
    runat="server" 
    ID="UsersList" 
    OnItemCommand="UsersList_ItemCommand" 
    AutoGenerateColumns="false"
    HeaderStyle-CssClass="dataTableHeader" 
    Width="60%">
    <Columns>
        <asp:HyperLinkColumn DataNavigateUrlField="Username" DataTextField="Username" HeaderText="Username"  DataNavigateUrlFormatString="~/Account/EditUser.aspx?user={0}"/>
        <asp:BoundColumn DataField="Email" HeaderText="Email" />
        <asp:ButtonColumn Text="Delete" HeaderText="Delete" ButtonType="PushButton" CommandName="DeleteUser" CausesValidation="false" />
    </Columns>
</asp:DataGrid>

以下是确认删除的Javscript代码:

<script>
    function confirmDelete() {
        var x = confirm("This action cannot be undone. Are you sure you want to delete this user?");
        return x;
    }
</script>

也许使用ButtonColumn无法实现这一点。我正在考虑换成TemplateColumn,然后在里面放一个按钮。但是,我将不得不重新设计在后端处理这些单击事件的代码,该代码目前在ItemCommand处理程序中处理。

如何取消由按下按钮栏引起的提交事件

尝试:

 deleteButton.OnClientClick = "return confirmDelete()";

您需要在form.submit()上确认删除,而不是在deletebutton.click()上,但您需要通过deletebutton_.click(。验证失败后,不要忘记清除变量/或anon函数。

将按钮上的onclick监听器替换为表单上的onsubmit监听器,如果您不想提交表单,该监听器将返回false,类似于:

<form onsubmit="return confirmDelete();" ...>

如果confirmDelete返回false,则提交被取消。如果返回任何其他值,则提交表单。