У меня есть четыре средств управления на странице с панелью обновления. Первоначально фокус мыши установлен сначала управлять. Когда я частично отправляю назад страницу на сервер, фокус автоматически перемещается для первого управления от последнего сфокусированного управления от управления, к которому я снабдил вкладками вниз. Там какой-либо путь состоит в том, чтобы уделить последнее внимание?
Взгляните на Восстановление утраченного фокуса на панели обновлений с помощью элементов управления автоматическим постбэком :
Основная идея решения - сохранить Идентификатор элемента управления с фокусом ввода до обновления панели обновления, и установите фокус ввода обратно на этот элемент управления после обновления панели обновления.
У меня есть следующий код JavaScript, который восстанавливает потерянный фокус в панели обновления.
var lastFocusedControlId = ""; function focusHandler (e) { document.activeElement = e.originalTarget; } { {1}} function appInit () { if (typeof (window.addEventListener)! == "undefined") { window.addEventListener ("focus", focusHandler, true); {{ 1}}} Sys.WebForms.PageRequestManager.getInstance (). Add_pageLoading (pageLoadingHandler); Sys.WebForms.PageRequestManager.getInstance (). Add_pageLoaded (pageLoadedHandler)}); ); function pageLoadingHandler (sender, args) { lastFocusedControlId = typeof (document.activeElement) === "undefined" ? "": document.activeElement.id; } function focusControl (targetControl) { if (Sys.Browser.agent === Sys.Browser. InternetExplorer) { var focusTarget = targetControl; if (focusTarget && (typeof (focusTarget.contentEditable)! == "undefined")) { oldContentEditableSetting = focusTarget.contentEditable; { {1}} focusTarget.contentEditable = false; } else { focusTarget = null; } targetControl.focus (); if (focusTarget) { focusTarget.contentEditable = oldContentEditableSetting; } } else { targetControl .focus (); } } function pageLoadedHandler (sender, args) { if (typeof (lastFocusedControlId)! == " undefined "&& lastFocusedControlId! =" ") { var newFocused = $ get (lastFocusedControlId); if (newFocused) { focusControl (newFocused); } } } Sys.Application.add_init (appInit);