2012-06-20 3 views
0

У меня почти такой же вопрос, как и на следующем посту (и я пробовал оба ответа, но ни один из них не работает), за исключением того, что меня не беспокоит, является ли TabContainer последний на странице или нет - я хочу, чтобы страница не перескакивала вверх или вниз до любого табло-контейнера, когда обновляется обновленная панель, содержащая tabcontainer. (Конечно, я предполагаю, что это на самом деле TabPanel - активный один. - получать фокус, на самом деле не TabContainer)AjaxToolkit: TabContainer на странице сфокусирован на обратной передаче

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

Как плакат говорит по ссылке выше, я явно не установлено никакого внимания, поэтому я не знаю, почему основное внимание уделяется моей tabPanel. Когда я отлаживаю, я вижу, что есть некоторый javascript, загруженный Ajax, который устанавливает фокус.

Я предполагаю, что я хочу сделать, если есть какое-то свойство, которое я могу установить (autofocus = false?), Переопределяет все, что выполняется javascript ajax, так что фокус не устанавливается.

Не знаете, как это сделать, однако. Этот источник javascript опубликован где-то, поэтому я могу его скопировать, закомментировать инструкцию фокуса и переопределить?

UPDATE

Я отладки версии выпуска сценария AJAX. Я не понимал, что есть версия отладки. У меня была отладка в web.config, но, видимо, ScriptManager также нуждается в ScriptMode = «Debug»; когда я устанавливаю это, я получаю отладочные версии внутреннего кода ajax. Я еще не закончил, но теперь я думаю, что теперь можно найти оскорбительный код, который устанавливает фокус, и я не прошу его установить какой-либо фокус и переопределить его. Когда я закончу, я отправлю ответ.

ответ

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; 
     } 

EDIT: Ничего себе, я только что заметил, что это точно такой же код, как это было предусмотрено в первоначальной ссылке, которую я написал выше. Наверное, я, должно быть, совершил какую-то глупую ошибку, прежде чем это помешало мне работать для меня.

+0

Это помогло мне сегодня .. Спасибо –

Смежные вопросы