我在第一次点击后在asp.net中为禁用按钮编写了代码。代码如下:
<asp:Button ID="btnNext" runat="server" CssClass="btn btnBlue btnStep" Text="Submit"
OnClick="btnSubmit_Click" CausesValidation="true" ValidationGroup="ServiceFee" OnClientClick="this.disabled = true; this.value = 'In progress...';__doPostBack('btnNext','')" UseSubmitBehavior="false" />
它工作正常没问题,但现在我需要添加一些额外的功能,即我需要专注于错误。当用户单击提交按钮而不输入卡片详细信息或个人详细信息时,它将在空文本框中显示错误,并且突然页面将重新加载,因为我已经在javascript中编写了dopostback。那么如何关注错误以及之后回发需要显示错误?
答案 0 :(得分:0)
在btnNext
事件中,您可以使用
// Supose txtCardDetails is the TextBox with the card details
if (string.IsNullOrWhiteSpace(txtCardDetails.Text))
{
ClientScript.RegisterStartupScript(this.GetType(), "script", "document.getElementById('" + txtCardDetails.ClientID + "').focus();");
return; // Maybe you want to do something before leave the event method
}
这将发送一个脚本来聚焦字段, 但是 ,我建议在客户端(JS)和服务器端(C#)进行验证所以,在客户端验证这个应该是这样的
<asp:Button ID="btnNext" runat="server" ...
OnClientClick="return SubmitIfValid(this);" ... />
function SubmitIfValid(el) {
if(document.getElementById('<%= txtCardDetails.ClientID %>').value === ''){
alert('invalid card details');
document.getElementById('<%= txtCardDetails.ClientID %>').focus();
return false;
}
// more validations
// if all is OK then...
el.disabled = true;
el.value = 'In progress...';
__doPostBack('btnNext','')
return true;
}
答案 1 :(得分:0)
您可以使用validationSummary
之类的验证控件。像你自己那样管理错误可能非常困难。