所以我有这个UpdatePanel,其中有这个TextBox。每当我点击它时,它会聚焦,然后在不到一秒的时间内失去焦点。因此,似乎无法在TextBox中编写任何内容。我该如何解决这个问题?
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
<asp:UpdatePanel runat="server" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Timer runat="server" ID="updateTimer" Interval="1000" OnTick="updateTimer_Tick"></asp:Timer>
<div>
<asp:Panel runat="server" BorderColor="Black" BorderStyle="Double" BorderWidth="4" ScrollBars="Vertical">
<asp:Literal runat="server" ID="chatLabel"></asp:Literal>
</asp:Panel>
<asp:TextBox runat="server" ID="chatTextBox" ClientIDMode="Static" BorderStyle="Double" BorderColor="Black" BorderWidth="4" AutoPostBack="true" OnKeyPress="return EnterEvent(event)"></asp:TextBox>
<asp:Button runat="server" ID="chatSubmit" OnClick="chatSubmit_Click" Text="Send"/>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<script>
function EnterEvent(e)
{
if (e.keyCode == 13)
{
__doPostBack('<%= chatSubmit.UniqueID %>', "");
}
}
</script>
</asp:Content>
答案 0 :(得分:0)
它会这样做。在按键时,您会触发异步回发,这就是导致您失去焦点的原因。你必须使用javascript,并使用
Sys.Application.add_endRequest(function(sender, e) { })
听取请求的结束并重新关注焦点。
我看到你要做的事情,我强烈建议你使用网络服务或信号器来做你想做的事情。你不会得到你想要的能力或表现。更新面板在回发时会将焦点移开,因此用户不能只是继续输入。更新面板在某种程度上受到限制。