¿Por qué mi formulario no se publica cuando desactivo el botón Enviar para evitar hacer doble clic?

Como cualquier otro desarrollador web en el planeta, tengo un problema con los usuarios que hacen doble clic en el botón Enviar en mis formularios. Entiendo que la forma convencional de manejar este problema es deshabilitar el botón inmediatamente después del primer clic, sin embargo, cuando hago esto,no publica.

Investigué un poco sobre esto, Dios sabe que hay suficiente información, pero otras preguntas comoDeshabilitar botón al enviar formulario, deshabilitar el botón parece funcionar. El póster original deDeshabilitar botón después de enviar Parece haber tenido el mismo problema que yo, pero no se menciona cómo / si lo resolvió.

Aquí hay un código sobre cómo repetirlo (probado en IE8 Beta2, pero tenía el mismo problema en IE7)

Mi codigo 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>

Mi código 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");
    }
}

Tenga en cuenta que cuando hace clic en el botón, se produce una devolución de datos y se actualiza la hora. Pero cuando marca la casilla de verificación, la próxima vez que haga clic en el botón, el botón se deshabilita (como se esperaba), pero nunca la devolución de datos.

¿Qué diablos me estoy perdiendo aquí?

Gracias por adelantado.

Respuestas a la pregunta(10)

Su respuesta a la pregunta