我使用 ASP.NET 验证控件来验证表单上的字段,并且我需要将焦点设置在页面中的特定锚点上,但即使SetFocusOnError
设置为True ,它也会一直移动到页面顶部。我尝试添加 a CustomValidator
,ClientValidationFunction
但它在验证之前运行,因此返回页面顶部。
我也试过这个:
但是第一个链接不再可用,第二个链接不起作用(这就是为什么答案应该是自包含的!)。
以下是我的代码示例:
<asp:ValidationSummary ID="ValidationSummary1" ClientIDMode="Static"
runat="server" HeaderText="[custom message in my native language]"
ValidationGroup="Valida" CssClass="msg_erro" />
<asp:RequiredFieldValidator ID="vldNome" runat="server"
ControlToValidate="txtNome" ValidationGroup="Valida" Display="Dynamic"
ErrorMessage="blah blah blah" SetFocusOnError="True" Text="*" />
//a bunch o others validatiors...
<asp:ImageButton runat="Server"
ImageUrl="~/img/anuncie/btn-cadastrar.png" ID="btnEnviar"
ValidationGroup="Valida" CssClass="btn-cadastrar" />
正如我所说,我需要将焦点放在特定的锚点上,但是将焦点设置在ValidationSummary
或任何字段上也会很好,因为我的字段从页面顶部开始。
谢谢。
更新
不同浏览器中的不同行为:
- IE - 单击提交时焦点正确设置在字段上(取决于 IE 版本)
- FF - 第一次点击提交会移动到页面顶部,第二次以及之后,它将焦点设置在字段上。
- 铬 - 从不工作。