asp.net – 当我禁用提交按钮以防止双击时,为什么我的表单没有发布?

前端之家收集整理的这篇文章主要介绍了asp.net – 当我禁用提交按钮以防止双击时,为什么我的表单没有发布?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
像地球上的其他每个Web开发人员一样,我在用户双击表单上的提交按钮时遇到问题.我的理解是,处理这个问题的传统方法是在第一次点击后立即禁用按钮,但是当我这样做时,它不会发布.

我对此做了一些研究,上帝知道有足够的信息,但其他问题如Disable button on form submission,禁用按钮似乎有效. Disable button after submit的原始海报似乎与我有同样的问题,但没有提及如何/如果他解决它.

这里有一些关于如何重复它的代码(在IE8 Beta2中测试,但在IE7中有同样的问题)

我的aspx代码

<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<script language="javascript" type="text/javascript">
    function btn_onClick()
    {
        var chk = document.getElementById("chk");
        if(chk.checked)
        {
            var btn = document.getElementById("btn");
            btn.disabled = true;
        }
    }
</script>
<body>
    <form id="form1" runat="server">
        <asp:Literal ID="lit" Text="--:--:--" runat="server" />
        <br />
        <asp:Button ID="btn" Text="Submit" runat="server" />
        <br />
        <input type="checkBox" id="chk" />Disable button on first click
    </form>
</body>
</html>

我的cs代码

using System;

public partial class _Default : System.Web.UI.Page 
{
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        btn.Click += new EventHandler(btn_Click);
        btn.OnClientClick = "btn_onClick();";
    }

    void btn_Click(object sender,EventArgs e)
    {
        lit.Text = DateTime.Now.ToString("HH:mm:ss");
    }
}

请注意,单击该按钮时,将发生回发,并更新时间.但是当您选中复选框时,下次单击该按钮时,该按钮将被禁用(按预期方式),但永远不会进行回发.

我在这里想念的是什么?

提前致谢.

解决方法

我想你只是错过了这个标签
UseSubmitBehavior="false"

试试这样:

<asp:Button ID="btnUpdate" runat="server" UseSubmitBehavior="false" OnClientClick="if(Page_ClientValidate()) { this.disabled = true; } else {return false;}" Text = "Update" CssClass="button" OnClick="btnUpdate_Click" ValidationGroup="vgNew"/>

Explanation

猜你在找的asp.Net相关文章