2012-01-25 35 views
4

我有一個更新面板,它在頁面的一部分上引起回發,並在回發後有焦點(不在更新面板中)的控件失去焦點。如何確定哪個控件具有焦點並保存該值,以便在頁面重新加載時重新關注它。謝謝。在C中檢測集中控制#

回答

1

首先,我將注意力集中在所有輸入上,並保留上次聚焦的控件ID。那麼以後的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

,我弱的Java腳本,所以,如果你可以給沒有jQuery的也可能是非常有幫助,非常感謝一個詳細的例子。謝謝。 –

+0

@DovMiller你需要檢查的唯一jQuery是$(「:input」)。focus(),現在做的是在輸入的焦點觸發器上添加一個函數。其餘的都是簡單的JavaScript。 – Aristos

0

您可以使用activeElementhasFocus屬性來獲取哪些元素具有焦點的javascript對象。

它可能不被所有人支持,因爲它是HTML5。

+0

我在哪裏以及如何在aspx頁面或後面的c#代碼中執行此操作?那麼普通的HTML呢? –

+0

你可以有一個隱藏的輸入欄「focusedControl」。在客戶端POST表單之前,您將activeElement ID放入輸入中。當您將頁面發送回客戶端時,您可以設置一個JavaScript事件' init();「>'在DOM中搜索ID並集中控件。 –

+0

你能舉一個詳細的例子嗎?這可能會非常有幫助,並會非常感激。謝謝。 –

0

可以解決這樣的

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(); 
    } 
} 
我不使用jQuery但
+0

這是在JavaScript?腳本管理器代碼放置在哪裏。對不起,我對JavaScript無知。 –

+0

是的,它是javascript.It是微軟產品的jquery的asp.net.Here也有一些事件將觸發像page_load,你可以在asp.net中看到。當更新面板更新時,此功能將自動調用。更多信息http: //msdn.microsoft.com/en-us/magazine/cc163354.aspx – sathishkumar

+0

有關腳本和/或代碼寫入位置的更多說明和詳細信息可能會有所幫助。謝謝。 –