Как и у любого веб-разработчика на планете, у меня есть проблема с пользователями, дважды щелкающими по кнопке «Отправить» в моих формах. Насколько я понимаю, обычным способом решения этой проблемы является отключение кнопки сразу после первого щелчка, однако, когда я делаю это, не отправляет .
Я провел некоторое исследование по этому вопросу, бог знает, что информации достаточно, но другие вопросы, такие как Отключить кнопку при отправке формы , отключение кнопки, похоже, работает. У оригинального плаката кнопки Отключить после отправки , похоже, была та же проблема, что и у меня, но нет упоминания о том, как / если он решил ее.
Вот некоторый код о том, как это повторить (протестировано в 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");
}
}
Обратите внимание, что при нажатии кнопки происходит обратная передача, и время обновляется. Но когда вы устанавливаете флажок, при следующем нажатии кнопки кнопка будет отключена (как и ожидалось), но обратная передача не выполняется.
ЧТО, ЧЕРТ, Я ЗДЕСЬ ЗДЕСЬ ???
Заранее спасибо.