Обнаружение сфокусированного управления в C # - PullRequest
4 голосов
/ 25 января 2012

У меня есть панель обновления, которая вызывает обратную передачу на части страницы, и после обратной передачи элемент управления, который имел фокус (которого нет на панели обновления), теряет фокус.Как я могу определить, какой элемент управления имеет фокус, и сохранить это значение, чтобы я мог перефокусироваться на него при перезагрузке страницы.Спасибо.

Ответы [ 3 ]

1 голос
/ 25 января 2012

Сначала я связываю фокус со всеми входными данными и сохраняю последний сфокусированный идентификатор элемента управления.Затем, после того как UpdatePanel завершит загрузку, я установил фокус на последний

// keep here the last focused id
var LastFocusedID = null;

function watchTheFocus()
{
  // on every input that get the focus, I grab the id and save it to global var
  $(":input").focus(function () {
     LastFocusedID = this.id;
  });   
}

var prm = Sys.WebForms.PageRequestManager.getInstance();    
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);

function InitializeRequest(sender, args) {      
}

// after the updatePanel ends I re-bind the focus, and set the focus
//  to the last one control
function EndRequest(sender, args) {
    if(LastFocusedID != null)
        $('#' + LastFocusedID).focus();        
    watchTheFocus();
}

jQuery(document).ready(function() 
{       
    watchTheFocus();
});

. Единственная мысль - я использую jQuery, но я представляю здесь свою идею, вы можете сделать это с небольшимбольше кода без jQuery.

0 голосов
/ 25 января 2012

Вы можете решить, как это

var last_focused = null;

$(function () {

 //store last focused element.

 $("input").live("focus", function(){
   last_focused = $(this);
 });


});

//in Script manager

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(pageLoaded);

function pageLoaded(sender, args)
{
  if(last_focused != null) 
  {
    last_focused.focus();
  }
}
0 голосов
/ 25 января 2012

Вы можете узнать, какой элемент находится в фокусе с помощью javascript, используя свойство activeElement и hasFocus для объекта HTMLDocument.

Это может поддерживаться не всеми, так как это HTML5.

...