2014-02-25 35 views
0

所以我有这个TextBox的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

它将这样做。在按下按键时,您会触发异步回传,这就是导致您失去焦点的原因。你将不得不使用javascript,并使用

Sys.Application.add_endRequest(function(sender, e) { }) 

要听取请求的结束并把焦点放回。

我明白你在做什么,我强烈推荐使用Web服务或Signalr来做你想做的事情。你不会获得你正在寻找的能力或表现。更新面板在回发时将焦点移开,因此用户不能继续打字。更新面板在某种程度上受到限制。