我如何向下滚动到多行TextBox's的底线,Javascript's scrollIntoView是不
本文关键字:是不 scrollIntoView Javascript 底线 TextBox 滚动 | 更新日期: 2023-09-27 18:18:10
我正在尝试创建一个基本的视频和文字聊天网站。在房间页面中,我有视频作为flash和一个文本框(多行),其中显示了发送到房间的所有消息,以及一个文本框,供用户通过单击旁边的按钮键入和发送
<tr>
<td>
<asp:UpdatePanel ID="UpdtPnlMesajlar" runat="server" EnableViewState="true">
<ContentTemplate>
<table>
<tr>
<td>
<asp:TextBox ID="TxtBxOdaMesajlari"
runat="server" ReadOnly="true"
TextMode="MultiLine"
Width="475" Height="100" >
</asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="TxtBxMesaj" runat="server"
Width="412"></asp:TextBox>
<asp:Button ID="BttnGonder" runat="server"
Text="Gönder" Width="55"
OnClick="BttnGonder_click"/>
</td>
</tr>
</table>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
以上是我的代码,所有这些控件都在一个UpdatePanel
,所以当用户点击BttnGonder
,没有闪烁发生。
当用户按下按钮时,他输入的内容将以以下称为BttnGonder_click
的方法连接到TxtBxOdaMesajlari
。
protected void BttnGonder_click(object sender, EventArgs e)
{
string uyeId = Session["UyeId"].ToString();
string mesaj = uyeId + " : " + TxtBxMesaj.Text;
TxtBxOdaMesajlari.Text = TxtBxOdaMesajlari.Text + Environment.NewLine + mesaj;
ScriptManager.RegisterStartupScript(this, this.GetType(), "txtbxmesajlarslide", "buttonClicked();", true);
}
在一些消息滚动条出现后,TxtBxOdaMesajlari
可以看到,但是新的消息无法看到,因为TxtBxOdaMesajlari
不能自动滑动/向下滚动。我搜索了这个,发现这个例子多用户聊天室使用ASP。. NET 2.0和AJAX,它使用Javascript的scrollIntoView()
,所以我决定使用它,但页面会闪烁,滚动根本不起作用。也许我用错了控制或者用错了方法。我用的是ASP。. NET 4.0,如果这很重要的话。
关于aspx文件
<script language="javascript" type="text/javascript">
function buttonClicked() {
$get("TxtBxOdaMesajlari").scrollIntoView("true");
}
</script>
我正在使用ScriptManager.RegisterStartupScript
,因为控件在UpdatePanel
中,因为它被建议并在用户接受的答案中工作得很好:JavaScript函数的3742不起作用。
scrollIntoView用于将文本框本身滚动到视图中,而不是其内容。
要滚动到文本框的末尾,可以使用:
function buttonClicked() {
var textBox = $get("TxtBxOdaMesajlari");
textBox.scrollTop = textBox.scrollHeight;
}