2

我有 2 个文本框,一个用于登录另一个用于密码。
我也有 1 个自定义服务器端验证器,如果密码输入错误,验证器会被触发。
我想要的是将重点放在此错误消息上。

我试过了focus()setfocusonerror财产也是。但它不工作。

这是我的代码:

<asp:CustomValidator  ID="cvLogin" 
                      runat="server" 
                      Display="Dynamic" 
                      CssClass="login-req"   
                      OnServerValidate="cvLogin_ServerValidate" 
                      ValidationGroup="tovalidate" 
                      SetFocusOnError="True">  
 </asp:CustomValidator>





 protected void cvLogin_ServerValidate(object source,
 ServerValidateEventArgs args)
         {  
if (currentUser == null)
                {
                  args.IsValid = false;
                     MessageBox1.Focus();
                     MessageBox1.SetMessage(Resources.RSResource.Login_InvalidLogin,
 Constants.MessageType.Error);

                 }
4

1 回答 1

2

尝试SetFocus方法Page

if (currentUser == null)
{
      args.IsValid = false;
      Page.SetFocus(MessageBox1);
      ...
}

我不知道。但可能您需要将控制权放在Panel.

更新 2:

我检查了SetFocus方法。它适用于TextBoxes,但不适用于Labelsor Validators。因此,如果您想将重点放在消息上,最好的选择是使用 javascript:

document.getElementById('MessageBox1').scrollIntoView(true);

我还测试了这个服务器端代码。它工作正常:

Page.ClientScript.RegisterStartupScript(this.GetType(), "FocusScript", "document.getElementById('MessageBox1').scrollIntoView(true);", true);
于 2013-08-15T10:55:30.233 回答