C# Asp.net maintainScrollPositionOnPostBack和表单验证失败
我有一张很长的表格要填。我启用了maintainScrollPositionOnPostBack,因为我有多个基于用户输入隐藏/显示的控件 由于表单很长,我希望页面聚焦并滚动到导致验证失败的第一个控件,并且启用了“聚焦于验证失败”选项。但是,maintainScrollPositionOnPostBack似乎会覆盖此选项(控件会聚焦,但不会向上滚动)C# Asp.net maintainScrollPositionOnPostBack和表单验证失败,c#,asp.net,validation,maintainscrollpositionon,C#,Asp.net,Validation,Maintainscrollpositionon,我有一张很长的表格要填。我启用了maintainScrollPositionOnPostBack,因为我有多个基于用户输入隐藏/显示的控件 由于表单很长,我希望页面聚焦并滚动到导致验证失败的第一个控件,并且启用了“聚焦于验证失败”选项。但是,maintainScrollPositionOnPostBack似乎会覆盖此选项(控件会聚焦,但不会向上滚动) 有什么解决办法吗?到目前为止,我所尝试的一切都没有奏效。这是一个asp.net webforms项目 这是一个很好的问题,而且很难开始工作。但我设
有什么解决办法吗?到目前为止,我所尝试的一切都没有奏效。这是一个asp.net webforms项目 这是一个很好的问题,而且很难开始工作。但我设法得到了一个版本,你可以尝试,也许可以建立在它的基础上 maintaintScrollPositionPostback=“true”-设置在表单提交和窗口加载上设置一系列javascript事件,这些事件按照您所说的“覆盖”验证器设置的焦点 因此,我所做的是向所有验证器添加一个公共css类,如下所示:
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" CssClass="error" ErrorMessage="RequiredFieldValidator" SetFocusOnError="true"
EnableClientScript="false" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
脚本搜索errormessage,并通过其带有锚的id来关注它。Javascript有很多功能,但它是针对表单元素的,所以这就是为什么这个解决方案
希望这有帮助 这是一个很好的问题,而且很难开始工作。但我设法得到了一个版本,你可以尝试,也许可以建立在它的基础上
maintaintScrollPositionPostback=“true”-设置在表单提交和窗口加载上设置一系列javascript事件,这些事件按照您所说的“覆盖”验证器设置的焦点
因此,我所做的是向所有验证器添加一个公共css类,如下所示:
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" CssClass="error" ErrorMessage="RequiredFieldValidator" SetFocusOnError="true"
EnableClientScript="false" ControlToValidate="TextBox1"></asp:RequiredFieldValidator>
脚本搜索errormessage,并通过其带有锚的id来关注它。Javascript有很多功能,但它是针对表单元素的,所以这就是为什么这个解决方案
希望这有帮助 谢谢你的回复!我刚刚试过这个,它确实识别出验证失败的控件的数量。但是,window.location.hash=“#”+el[0].id代码>似乎什么都没做。我不知道这是为什么。我会继续测试和更新。如果这是加载事件的顺序,请尝试将此脚本放到body-element的最底层。是的,解决了问题!不得不把脚本放在最后一页!我猜另一个可能的解决方案是使用更新面板,而不是进行完整的回发,如果我有时间,可能会尝试这么晚。非常感谢您的帮助。对于有相同问题的任何人,如果您使用的是固定顶部导航栏,您可以调用window.scrollBy(x,-y)
要滚动到正确的位置-y必须是导航栏的高度,因此您可以按该高度向上滚动。非常感谢您的回复!我刚刚试过这个,它确实识别出验证失败的控件的数量。但是,window.location.hash=“#”+el[0].id代码>似乎什么都没做。我不知道这是为什么。我会继续测试和更新。如果这是加载事件的顺序,请尝试将此脚本放到body-element的最底层。是的,解决了问题!不得不把脚本放在最后一页!我猜另一个可能的解决方案是使用更新面板,而不是进行完整的回发,如果我有时间,可能会尝试这么晚。非常感谢您的帮助。对于有相同问题的任何人,如果您使用的是固定顶部导航栏,您可以调用window.scrollBy(x,-y)
要滚动到正确的位置-y必须是导航栏的高度,因此您可以向上滚动该数值