我有一個asp.net應用程序,我想要禁用按鈕,只要他們被點擊,以防止多次提交。我想使用jquery,因爲該站點已經寬鬆地使用它。在.net應用程序中使用jquery禁用按鈕回發.net應用程序
我已經試過是:
$(document).ready(function() {
$("#aspnetForm").submit(function() {
$('input[type=submit]', $(this)).attr("disabled", "disabled");
})
});
以上將禁用按鈕,頁面提交,但在單擊處理asp.net按鈕永遠不會被調用。簡單地刪除上述和按鈕正常工作。
有沒有更好的方法?或者,相反,我做錯了什麼?
UPDATE 好的,我終於有一點時間把一個非常簡單的頁面放在一起。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SubTest.aspx.cs" Inherits="MyTesting.SubTest" %>
<!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">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#form1").submit(function() {
$('input[type=submit]', $(this)).attr("disabled", "disabled");
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button 2" />
</div>
</form>
</body>
</html>
後面的代碼看起來像:
using System;
namespace MyTesting {
public partial class SubTest : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
if (IsPostBack) {
// this will execute when any button is pressed
Response.Write("postback");
}
}
protected void Button1_Click(object sender, EventArgs e) {
// never executes
System.Threading.Thread.Sleep(1000);
Response.Write("Button 1 clicked<br />");
} // method::Button1_Click
protected void Button2_Click(object sender, EventArgs e) {
// never executes
System.Threading.Thread.Sleep(1000);
Response.Write("Button 2 clicked<br />");
} // method::Button2_Click
}
}
當你點擊一個按鈕,它顯然是禁用的按鈕,但無論是按鍵的點擊中運行。
渲染HTML
<!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">
<head><title>
</title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#form1").submit(function() {
$('input[type=submit]', $(this)).attr("disabled", "disabled");
});
});
</script>
</head>
<body>
<form name="form1" method="post" action="SubTest.aspx" id="form1">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTcxODU4OTc0MWRkParC5rVFUblFs8AkhNMEtFAWlU4=" />
</div>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwKB57WhCAKM54rGBgK7q7GGCC6LlWKFoij9FIBVuI0HOVju/fTy" />
</div>
<div>
<input type="submit" name="Button1" value="Button" id="Button1" />
<input type="submit" name="Button2" value="Button 2" id="Button2" />
</div>
</form>
</body>
</html>
非常有趣gotchya – 2010-05-28 21:37:12
,我想我現在知道究竟發生了什麼事情。因爲禁用了按鈕屬性,所以asp.net引擎會說:「哦,按鈕被禁用,請不要運行它的回發代碼!」但是,由於提交已發送,它會繼續執行並執行常規回發... grr – NotMe 2010-05-28 21:44:24