【问题标题】:UpdatePanel, Timer and TexBox ProblemUpdatePanel、Timer 和 TexBox 问题
【发布时间】:2011-05-04 21:23:26
【问题描述】:
<asp:UpdatePanel ID="UpdatePanel3" runat="server" UpdateMode="Always" >
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="300" ontick="Timer1_Tick"></asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>

<asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Send" />
</ContentTemplate>
</asp:UpdatePanel>


问题是 TextBox1’s 光标没有闪烁,它是静态的,但您可以在其中写入。它给人的印象是它冻结了。为什么光标不闪烁?

【问题讨论】:

  • 切换焦点可能会解决此问题。您是否尝试使用 JavaScript 到 TextBox1.blur() 然后 TextBox1.focus()
  • 我会发布作为答案,虽然我不确定它是否是你要找的。​​span>
  • 你试试看 - 你已经拥有了所有必要的代码。 ;-)
  • 感谢这篇文章对我的帮助..!!

标签: asp.net ajax timer updatepanel


【解决方案1】:

您应该将计时器间隔设置为接近 1000 毫秒。这应该可以解决您的眨眼问题。

【讨论】:

    【解决方案2】:

    当回发完成后,您可以运行一段 JavaScript,将焦点从文本框中移除(例如,它将不再接受文本),然后您可以立即重新关注文本框(因此它将接受文本再次)。这可能会“重置”光标以使其正确显示。

    尝试将其添加到您的 ASPX,最好在 UpdatePanels 之外:

    <script type="text/javascript">
        function fixTextBoxFocus()
        {
            var textBox = document.getElementById("<%= TextBox1.ClientID %>");
    
            textBox.blur(); //Remove the focus from the text box.
            textBox.focus();//Re-focus on the textbox.
        }
    </script>
    

    然后,在您的代码隐藏中(将 MyPage 替换为您的页面类的名称):

    protected void Timer1_Tick(object sender, EventArgs e)
    {
        this.ClientScript.RegisterStartupScript(typeof(MyPage), "fixTextBoxFocus", "fixTextBoxFocus();", true);
    }
    

    现在,当部分回发发生时,每次都会执行此脚本。试一试,如果它有助于解决问题,请告诉我。

    【讨论】:

    • 对不起,它没有奏效。光标仍然是静止的,它没有闪烁。我认为这是由于Timer
    【解决方案3】:

    在更新面板中放置一个计时器将导致该更新面板的重复刷新。因为您已将计时器间隔设置为 300 毫秒。这可能是问题所在。 你需要考虑什么—— 您真的要将计时器放在更新面板中吗? 您是否真的需要将间隔保持为 300 毫秒。 不能将文本框移到更新面板之外吗?

    【讨论】:

    • 我已将Timer 放在其他UpdatePanel 中,而不是放在TextBox UpdatePanel 中。所以Timer的刷新不应该打扰TextBox
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多