如何在第一次点击后禁用按钮
本文关键字:按钮 第一次 | 更新日期: 2023-09-27 18:17:47
我有一个按钮的以下 onclick 事件。 一旦这个事件被激活,我想禁用该按钮。谁能帮我了解该怎么做?
这是我在按钮单击事件上执行的代码。
protected void Button3_Click(object sender, EventArgs e)
{
if (Session["login"] != null && Session["db"] != null)
{
digit b = new digit();
String digitformed = b.formdigit(this.DropDownList1, this.TextBox1, this.TextBox2);
chekcount c = new chekcount();
int count = c.getmaxcountforjud_no(digitformed);
int addtocount = count + 1;
String name = Session["login"].ToString();
String databs = Session["db"].ToString();
String complex_name = name + databs;
if (DropDownList2.SelectedItem.Text != "New")
{
update u = new update();
u.update1(this.Editor1, digitformed, this.TextBox3, complex_name, name, this.DropDownList2);
Response.Write(@"<script language='javascript'>alert('Updated')</script>");
}
else
{
save d = new save();
d.dosave(this.Editor1, addtocount, digitformed, this.TextBox3, complex_name, name);
Response.Write(@"<script language='javascript'>alert('Saved')</script>");
}
}
else
{
Response.Redirect("log.aspx");
}
}
这是我要禁用的按钮。
<asp:Button ID="Button3" runat="server" Text="Save" onclick="Button3_Click"
Visible="False" />
使用按钮控件的 OnClientClick 和 UseSubmitBehavior 属性。
<asp:Button runat="server" ID="BtnSubmit"
OnClientClick="this.disabled = true; this.value = 'Submit in progress...';"
UseSubmitBehavior="false"
OnClick="BtnSubmit_Click"
Text="Click to Submit" />
OnClientClick 允许您添加客户端 OnClick 脚本。在这种情况下,JavaScript 将禁用按钮元素并将其文本值更改为进度消息。回发完成后,新呈现的页面会将按钮还原回其初始状态,而无需任何其他工作。
在客户端禁用提交按钮带来的一个缺陷是它将取消浏览器的提交,从而取消回发。将 UseSubmitBehavior 属性设置为 false 会告诉 .NET 注入必要的客户端脚本来触发回发,而不是依赖于浏览器的表单提交行为。在这种情况下,它注入的代码将是:
__doPostBack('BtnSubmit','')
重新提取的 HTML:
<input type="button" name="BtnSubmit"
onclick="this.disabled = true; this.value = 'Submitting...';__doPostBack('BtnSubmit','')"
value="Submit Me!" id="BtnSubmit" />
这应该会给你所需的行为。
寄件人: http://encosia.com/disable-a-button-control-during-postback/学分:戴夫沃德(推特:@Encosia(
你试过吗?
protected void Button3_Click(object sender, EventArgs e)
{
Button3.Enabled = false;
//rest of code
}
<asp:Button onclick="Button3_Click" ID="Button3" runat="server" Text="Save"
OnClientClick="this.disabled = true; this.value = 'please wait ..';"
UseSubmitBehavior="false" />
您需要在服务器端代码中设置按钮的 Enabled 属性,如其他海报所述。但是,如果您试图防止来自同一按钮的多个提交,则需要稍微不同的策略。
向类中添加方法:
static void DisableButtonDuringPostback(Page page, Button control)
{
StringBuilder sb = new StringBuilder();
sb.Append("this.disabled = true;");
sb.Append(page.ClientScript.GetPostBackEventReference(control, control.ID.ToString()));
sb.Append(";");
control.Attributes.Add("onclick", sb.ToString());
}
在Page_Load添加
DisableButtonDuringPostback(this.Page, Button3);
查看标记的代码
protected void Button3_Click(object sender, EventArgs e)
{
** if (Session["Clicked"] == null)
Session["Clicked"] = true;
else
{
Button3.Enabled = false;
return;
} **
if (Session["login"] != null && Session["db"] != null)
{
digit b = new digit();
String digitformed = b.formdigit(this.DropDownList1, this.TextBox1, this.TextBox2);
chekcount c = new chekcount();
int count = c.getmaxcountforjud_no(digitformed);
int addtocount = count + 1;
String name = Session["login"].ToString();
String databs = Session["db"].ToString();
String complex_name = name + databs;
if (DropDownList2.SelectedItem.Text != "New")
{
update u = new update();
u.update1(this.Editor1, digitformed, this.TextBox3, complex_name, name, this.DropDownList2);
Response.Write(@"<script language='javascript'>alert('Updated')</script>");
}
else
{
save d = new save();
d.dosave(this.Editor1, addtocount, digitformed, this.TextBox3, complex_name, name);
Response.Write(@"<script language='javascript'>alert('Saved')</script>");
}
}
else
{
Response.Redirect("log.aspx");
}
}
///count number of button click
var counter = 0;
function countclickbutton() {
counter++;
if (counter > 1) {
alert("proessing..please wait.");
//do not allow to again click
return false;
}
else {
return true;
}
}
调用此客户端单击按钮
如果你想使用jquery来做到这一点,而不是
$('#button3').attr("disabled", true);
这是一个旧帖子,但我认为它没有得到完全回答。
首先,在 ASP.NET WebForms 中,您向 Web 服务器提交HTTP GET
请求,该服务器处理您的请求并输出客户端 HTML 代码供浏览器呈现。
与服务器端控件交互时,值包含在属性的隐藏VIEWSTATE
输入字段中(如 Enabled
的布尔值(。
当您单击按钮时,它会向同一页面上的 Web 服务器发送HTTP POST
请求。这就是单击按钮时触发 Page_Load
事件的原因。
处理完HTTP POST
请求后,它将返回 HTML 代码供浏览器重新呈现。因此,如果 Page_Load
事件中有以下代码:
if (Page.IsPostBack) { Button3.Enabled = false; }
在处理HTTP POST
请求并返回更新的客户端代码之前,它不会向用户显示它已被禁用。
从最初的问题来看,服务器似乎需要几秒钟才能返回响应,因此在反复单击按钮时可能会触发多个回发事件。
解决问题的一种简单(但烦人(的方法是让一个常规的 HTML button
在 JavaScript 中执行一个function
,禁用它并触发服务器端控件的 onclick 事件。这样做的问题是,当HTTP POST
请求返回响应时,它会将常规 HTML button
呈现为已启用。要解决此问题,您只需使用内联 ASP.NET 代码在 JavaScript 中禁用它。下面是一个示例:
.ASPX 文件
<button id="clientButton" onclick="javascript:update();" />
<asp:Button ID="serverButton" OnClick="serverButton_OnClick" runat="server" />
<script type="text/javascript">
<% if (Page.IsPostBack) { %>
document.getElementById("clientButton").enabled = false;
<% } %>
function update() {
document.getElementById("clientButton").enabled = false;
document.getElementById("<%= serverButton.ClientID %>").click();
}
</script>
<style type="text/css">
#<%= serverButton.ClientID %> {
visibility: hidden;
display: none;
}
</style>
.ASPX.CS文件
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
// Triggered when serverButton has 'javascript:click()' triggered
}
}
对于 WPF 应用程序
Button1.IsEnabled = false; // Replace Button1 with your button name, false disables button
找到了这个。在验证输入时有效,并且在验证失败时不希望禁用提交按钮。
<asp:Button Text="Submit"
runat="server"
ID="btnSubmit"
OnClick="btnSubmit_Click"
OnClientClick=" if ( Page_ClientValidate() ) { this.value='Submitting..'; this.disabled=true; }"
UseSubmitBehavior="false" />
来源,本页底部,匿名。