I have 3 textboxes , one is in updatepanel it will refresh for every 4 seconds. During refresh the controls which are not in update panel also loosing focus. I want to keep focus on those controls.
Here is my code:
<asp:UpdatePanel ID="upnlChat" runat="server">
<ContentTemplate >
<asp:TextBox ID="txtChatBox" ReadOnly="true" TextMode="MultiLine"
CssClass="mymultitextboxclass" runat="server"></asp:TextBox>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="timerChat" />
</Triggers>
</asp:UpdatePanel>
<asp:Timer ID="timerChat" Interval="4000" runat="server" ontick="timerChat_Tick" ></asp:Timer>
<table>
<tr><td>User: </td><td colspan="2"><asp:TextBox ID="txtUser" runat="server" ></asp:TextBox><br /></td>
<td>
<asp:RequiredFieldValidator ID="RequiredUserName" runat="server" ErrorMessage="Username Required" ControlToValidate="txtUser" ></asp:RequiredFieldValidator> </td></tr>
<tr><td>Message: </td><td><asp:TextBox ID="txtMsg" CssClass="mymsg" TextMode="MultiLine" onkeydown="if (event.keyCode == 13) { btnSend.focus(); this.form.submit(); }" runat="server"></asp:TextBox></td>
<td colspan="2"><asp:Button ID="btnSend" runat="server" onclick="btnSend_Click"
OnClientClick="scroll()" Text="send" />
</td></tr>
</table>
Can anyone please help me?
Here is a slightly modified version of @Darshan's script which uses jQuery. I like his solution because this 1 script will work with all UpdatePanels so you don't have to write code specifically for each and every UpdatePanel.
My modifications are:
/* Retain element focus after UpdatePanel postback
***************************************************/
jQuery(function ($) {
var focusedElementId = "";
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(function (source, args) {
var fe = document.activeElement;
if (fe != null) {
focusedElementId = fe.id;
} else {
focusedElementId = "";
}
});
prm.add_endRequest(function (source, args) {
if (focusedElementId != "") {
$("#" + focusedElementId).focus();
}
});
});
This version will work with the Chosen jQuery plugin.
/* Retain element focus after UpdatePanel postback
***************************************************/
jQuery(function ($) {
var focusedElementSelector = "";
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(function (source, args) {
var fe = document.activeElement;
focusedElementSelector = "";
if (fe != null) {
if (fe.id) {
focusedElementSelector = "#" + fe.id;
} else {
// Handle Chosen Js Plugin
var $chzn = $(fe).closest('.chosen-container[id]');
if ($chzn.size() > 0) {
focusedElementSelector = '#' + $chzn.attr('id') + ' input[type=text]';
}
}
}
});
prm.add_endRequest(function (source, args) {
if (focusedElementSelector) {
$(focusedElementSelector).focus();
}
});
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With