AjaxToolkit:页面上的TabContainer专注于回发

时间:2012-06-20 13:21:23

标签: updatepanel tabpanel tabcontainer

我几乎和下面的帖子完全相同的问题(我尝试了两个答案,但都没有效果),除了我不担心TabContainer是否是页面的最后一个 - 我想要当包含tabcontainer的updatePanel更新时,阻止页面向上或向下跳转到任何tabcontainer。 (当然,我猜它实际上是一个TabPanel - 活跃的 - 获得焦点,而不是TabContainer。)

AjaxToolkit: the last TabContainer on the page is focused on page load

正如海报在上面的链接中说的,我没有明确设置任何焦点,所以我不知道为什么焦点被设置到我的tabPanel。当我调试时,我可以看到Ajax加载了一些设置焦点的javascript。

我想我想做什么,除非我可以设置一些属性(autofocus = false?)覆盖任何ajax javascript正在执行,以便焦点不会被设置。

不知道如何解决这个问题。这个javascript源是在某个地方发布的,所以我可以复制它,注释掉焦点指令,并覆盖?

更新

我正在调试ajax脚本的发布版本。我没有意识到有可用的调试版本。我在web.config中进行了调试,但显然ScriptManager还需要ScriptMode =“Debug”;当我设置它时,我得到内部ajax代码的调试版本。我还没有完成,但我认为现在应该能够找到设置焦点的令人反感的代码而不要求我设置任何焦点,并覆盖它。我完成后会发一个答案。

1 个答案:

答案 0 :(得分:3)

最后通过调试ajax,找到令人反感的代码并覆盖它来修复它。

如果有人遇到同样的问题,这是AjaxCotnrolToolkit版本4.1.60501.0,以下内容位于Tabs.Tabs.js;只需将此脚本粘贴在您的页面上即可停止恼人的自动对焦。

我现在已经把它完全关闭了,但当然如果那就是你想要的话,它可以有条件地关闭。

下面和原始方法之间的唯一区别是注释行。

    Sys.Extended.UI.TabContainer.prototype._app_onload = function (sender, e) {
            if (this._cachedActiveTabIndex != -1) {
                this.set_activeTabIndex(this._cachedActiveTabIndex);
                this._cachedActiveTabIndex = -1;

                var activeTab = this.get_tabs()[this._activeTabIndex];
                if (activeTab) {
                    activeTab._wasLoaded = true;
                    //activeTab._setFocus(activeTab);     // the only change made to this prototype
                }
            }
            this._loaded = true;
        }
编辑:哇,我刚才注意到这与上面发布的原始链接提供的代码完全相同。我想我必须犯了一些愚蠢的错误才能阻止它为我工作。