使用 WebForms,我怎样才能拥有一个禁用的按钮,仅在单击 IT 之后,并且在通过验证之后?
我知道有:单击后禁用asp.net按钮以防止双击
但是,我的页面上还有其他回传,在最后一个按钮按下确认预订之前,我需要允许这些回传。
这只是我需要确保通过验证的最后一次按下按钮,但在被禁用之前只允许按下一次。
代码如下:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
FinalButton.Attributes.Add("onclientclick", "if(Page_ClientValidate('vg')){this.disabled = true; }");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = "Hi";
}
protected void Button3_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
}
ASPX 页面:
<p>
<asp:TextBox ID="TextBox1" runat="server" ValidationGroup="vg"></asp:TextBox>
</p>
<p>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Set TextBox1 to Hi" />
<asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="Set TextBox1 to Empty" />
</p>
<p>
<asp:Button ID="FinalButton" runat="server" Text="Final Submit" ValidationGroup="vg" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator" ValidationGroup="vg"></asp:RequiredFieldValidator>
</p>
因此,除非填充了文本框,否则“FinalButton”不应提交(这部分有效)。但是,如果填充了文本框,那么在回发之前应该禁用它以防止双击 - 但它不会禁用,所以我认为我的代码在这里是不正确的:
FinalButton.Attributes.Add("onclientclick", "if(Page_ClientValidate('vg')){this.disabled = true; }");
呈现时页面上的源将按钮显示为:
<input type="submit" name="ctl00$MainContent$FinalButton" value="Final Submit" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$FinalButton", "", true, "vg", "", false, false))" id="MainContent_FinalButton" onclientclick="if(Page_ClientValidate('vg')){this.disabled = true; }" />
谢谢,
标记