2

2 つのテキストボックスがあり、1 つはログイン用、もう 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には機能しません。したがって、メッセージに焦点を合わせたい場合は、javascript を使用するのが最適です。LabelsValidators

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

このサーバー側のコードもテストしました。それはうまくいきます:

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