2013-08-15 3 views
2

2 개의 입력란이 있습니다. 하나는 암호 용입니다.
암호가 잘못 입력되면 유효성 검사기가 실행되기 때문에 사용자 지정 서버 측 유효성 검사기가 1 개 있습니다.
내가 원하는 것은이 오류 메시지에 초점을 맞추는 것입니다.은 맞춤 검사기에 초점을 맞 춥니 다.

focus()setfocusonerror 속성도 시도했습니다. 하지만 작동하지 않습니다.

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

나는 확실하지 않다 :

<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); 

       } 

답변

2

PageSetFocus 방법을 시도해보십시오

여기 내 코드입니다. 그러나 Panel에 통제권을 두어야 할 수도 있습니다.

업데이트 2 :

나는 SetFocus 방법을 확인. TextBoxes에서 작동하지만 Labels 또는 Validators에서는 작동하지 않습니다. 따라서 메시지에 중점을 두려면 자바 스크립트를 사용하는 것이 가장 좋습니다.

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

이 서버 측 코드도 테스트했습니다. 잘 작동합니다 :

Page.ClientScript.RegisterStartupScript(this.GetType(), "FocusScript", "document.getElementById('MessageBox1').scrollIntoView(true);", true); 
+0

ok.is 페이지 하단에 초점을 맞출 수있는 방법이 있습니다. 내 메시지가 하단에 표시되기 때문에 –

+0

내 대답의 업데이트를 참조하십시오. 나는 그것을 시험했다. – algreat

+0

감사합니다. 작동합니다. –

관련 문제