Почему моя форма не публикуется, когда я отключаю кнопку отправки, чтобы предотвратить двойной щелчок?

Как и у любого другого веб-разработчика на планете, у меня есть проблема с пользователями, дважды щелкающими по кнопке «Отправить» в моих формах. Насколько я понимаю, обычным способом решения этой проблемы является отключение кнопки сразу после первого щелчка, однако, когда я делаю это,это не публиковать.

Я провел некоторое исследование по этому вопросу, бог знает, что информации достаточно, но есть и другие вопросы, такие какОтключить кнопку при отправке формы, отключение кнопки, кажется, работает. Оригинальный постерОтключить кнопку после отправки похоже, у меня была та же проблема, что и у меня, но нет никаких упоминаний о том, как / если он решил ее.

Вот некоторый код о том, как это повторить (протестировано в 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");
    }
}

Обратите внимание, что при нажатии кнопки происходит обратная передача, и время обновляется. Но когда вы устанавливаете флажок, при следующем нажатии кнопки кнопка отключается (как и ожидалось), но никогда не выполняет обратную передачу.

ЧТО, ЧЕРТ, Я ЗДЕСЬ ЗДЕСЬ ???

Заранее спасибо.

Ответы на вопрос(10)

Ваш ответ на вопрос