我有2个文本框,一个用于登录,另一个用于密码。
我有一个自定义服务器端验证器,如果密码输入错误,验证器就会被触发。
我想要的是将焦点放在这个错误消息上。
我试过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);
}
发布于 2013-08-15 10:55:30
尝试SetFocus方法的Page
if (currentUser == null)
{
args.IsValid = false;
Page.SetFocus(MessageBox1);
...
}
我不确定。但是,您可能需要将您的控件放在Panel
上。
更新2:
我检查了SetFocus
方法。它适用于TextBoxes
,但不适用于Labels
或Validators
。因此,如果您想将焦点放在消息上,最好的选择是使用javascript:
document.getElementById('MessageBox1').scrollIntoView(true);
我还测试了这个服务器端代码。它运作良好:
Page.ClientScript.RegisterStartupScript(this.GetType(), "FocusScript", "document.getElementById('MessageBox1').scrollIntoView(true);", true);
https://stackoverflow.com/questions/18251171
复制相似问题