ASP.NET:在回发之前查找哪个元素有焦点?

我在页面上有一系列控件,包括一些用于记录员工时间表的文本框。当OnTextChanged发生火灾时,页面回发并更新整个工作时间和分钟。ASP.NET:在回发之前查找哪个元素有焦点?

的问题是,当用户点击保存按钮,回发发生,但它是不是因为保存按钮的行动,但因为OnTextChanged已经解雇。用户认为保存进行得很顺利,直到他/她再次访问该页面并且没有找到他/她的数据。接下来是不可能向用户解释他们需要点击两次,因为第一次文本框失去焦点,第二次是正确的。

有没有办法存储回发前发生焦点的最后一个元素的值?我试图访问__LASTFOCUS的值,但我得到一个空字符串。

string lastFocus = Page.Request.Params.Get("__LASTFOCUS"); 

感谢您的帮助

回答:

如果你试图抓住失去其具有的AutoPostBack =“真正的”焦点最后的控制,我相信你可以从这个Request.Form.Get("__EVENTTARGET")控制的名称。该表单变量包含调用回发的任何控件的标识(在大多数情况下(如果不是全部情况下))。

回答:

我有一个GridView与任意数量的文本框类似的情况,每个都有AutoPostBack on和OnTextChanged事件处理程序。我想要做的就是能够从文本框中跳出,回发,然后将焦点恢复到在回发之前有焦点的文本框。我标签为到的文本框。

这是我结束了:

function RestoreFocus(source, args) { 

var val = $("#<%=postbackFocusID.ClientID %>").attr("value");

var el = document.getElementById(val);

if (el != null)

el.focus();

}

function PersistElementThatHasFocus(source, args) {

$("#<%=postbackFocusID.ClientID %>").attr("value", document.activeElement.id);

}

function AddRequestHandler() {

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

prm.add_endRequest(RestoreFocus);

prm.add_beginRequest(PersistElementThatHasFocus);

}

的postbackFocusID只是一个asp:HiddenField。

以上是 ASP.NET:在回发之前查找哪个元素有焦点? 的全部内容, 来源链接: utcz.com/qa/260435.html

回到顶部