首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将重点放在自定义验证器上

将重点放在自定义验证器上
EN

Stack Overflow用户
提问于 2013-08-15 10:49:53
回答 1查看 3.2K关注 0票数 2

我有2个文本框,一个用于登录,另一个用于密码。

我有一个自定义服务器端验证器,如果密码输入错误,验证器就会被触发。

我想要的是将焦点放在这个错误消息上。

我试过focus()setfocusonerror属性。但这不管用。

这是我的代码:

代码语言:javascript
运行
复制
<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);

                 }
EN

Stack Overflow用户

回答已采纳

发布于 2013-08-15 10:55:30

尝试SetFocus方法的Page

代码语言:javascript
运行
复制
if (currentUser == null)
{
      args.IsValid = false;
      Page.SetFocus(MessageBox1);
      ...
}

我不确定。但是,您可能需要将您的控件放在Panel上。

更新2:

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

代码语言:javascript
运行
复制
document.getElementById('MessageBox1').scrollIntoView(true);

我还测试了这个服务器端代码。它运作良好:

代码语言:javascript
运行
复制
Page.ClientScript.RegisterStartupScript(this.GetType(), "FocusScript", "document.getElementById('MessageBox1').scrollIntoView(true);", true);
票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18251171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档