<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
光标没有闪烁它是静态的,但你可以写入它。它给人的印象是它冻结了。为什么光标不闪烁?
答案 0 :(得分:1)
您应将计时器间隔设置为接近1000毫秒。这应该可以解决你的问题。
答案 1 :(得分:0)
当回发完成后,您可以运行一段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);
}
现在,当发生部分回发时,每次都会执行此脚本。尝试一下,让我知道它是否有助于解决问题。
答案 2 :(得分:0)
在更新面板中放置计时器将导致重复刷新该更新面板。您已将计时器间隔设置为300毫秒。这可能是问题所在。 你需要考虑什么 - 您真的想将计时器放在更新面板中吗? 你真的需要将间隔保持在300毫秒。 是不是可以将文本框移到updatepanel外面?