У меня есть настройки страницы, например, так:
<ajax:UpdatePanel id="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox id="TextBox1" runat="server" AutoPostBack="true"/>
<asp:TextBox id="TextBox2" runat="server" AutoPostBack="true"/>
</ContentTemplate>
</ajax:UpdatePanel>
<asp:TextBox id="TextBox3" runat="server"/>
Всякий раз, когда есть изменения в TextBox1 или TextBox2, происходит асинхронная обратная передача.Это, конечно, инициируется перемещением фокуса на другой элемент управления после изменения текста.Проблема в том, что асинхронная обратная передача завершает элемент управления, получивший фокус, теряет этот фокус.Неважно, находится ли он внутри панели обновления или снаружи.
Я пытался добавить javascript на главную страницу:
<script type="text/javascript">
var lastFocused = null;
$(document).ready(function() {
$('input').focus(function() {
lastFocused = this;
});
$('.dropdown').focus(function() {
lastFocused = this;
});
});
function RestoreFocus(source, args) {
if (lastFocused != null)
lastFocused.focus();
}
function AddRequestHandler() {
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(RestoreFocus);
}
</script>
Наряду с
<body onload="AddRequestHandler">
Я знаю, что lastFocused получает значение, и RestoreFocus работает, но всякий раз, когдаон запускает значение lastFocused, равное нулю.
У кого-нибудь есть исправления для моего javascript или решения проблемы в целом?