【问题标题】:ASP.NET Focus Scrolls Page to InputASP.NET 焦点滚动页面到输入
【发布时间】:2010-12-20 20:29:26
【问题描述】:

我在 UpdatePanel 中有一些文本框/标签。当我从其中一个文本框中跳出时,必须用一些文本更新标签。这会导致页面上的焦点重置到最顶部的元素。

这是一个数据输入表单,用户希望根本不必使用鼠标。我可以将焦点重新放在代码中的正确文本框上:

Page.SetFocus(tbxInput);

tbxInput.Focus();

在 IE 中,浏览器滚动位置保持不变(哇哦!)。在 Chrome 和 Firefox 中不是;调整滚动位置,使焦点文本框是页面上显示的最后一个元素。这对用户来说真的很烦人。

我在 web.config 中使用以下规则:

<pages theme="Default" styleSheetTheme="Default" maintainScrollPositionOnPostBack="true" validateRequest="false">

如何实现 IE 的行为?

【问题讨论】:

    标签: asp.net focus maintainscrollpositionon


    【解决方案1】:

    对于这种事情,我从 javascript 更新标签文本(可能使用对 Web 服务或页面方法的 AJAX 调用)。

    【讨论】:

    • 有没有办法通过在标签的文本更新时以某种方式阻止焦点重置来绕过这种情况?这样做似乎有点矫枉过正:[
    • @Harper 你有没有为你的评论找到答案?
    • @Tristan Descartes,我的解决方案(在 javascript 中更新标签)确实避免了失去焦点。 OP 遇到的问题是他的 UpdatePanel 正在回发并通过后面的代码进行更新。但是,我的解决方案是纯 javascript,不会导致回发,并且完全不影响焦点。如果您需要从服务器获取一些值,您甚至可以在您的 javascript 中使用 AJAX。
    【解决方案2】:

    使用 asp.net AJAX UpdatePanel 是一种选择。此外,您使用的是哪个版本的 .net 框架。

    作为per this 4.0 它应该可以工作,但我还没有尝试过。

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 2017-05-12
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 2022-11-08
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多