SetFocus ved enter og SetScrollPosition ved div
Hej,Jeg forsøger at oprette en simpel chat. Til det har jeg en tabel med en div og en Literal (der skal vise beskederne):
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
<div id="divMessages" onresize="SetScrollPosition()" class="chatMessagesItemsCell">
<asp:Literal Id="litMessages" runat="server" />
</div>
</td>
<td> </td>
</tr>
</table>
Så har jeg en tabel med textbox og en knap;
<table cellpadding="0">
<tr>
<td style="text-align: right">
<asp:Label ID="lblMessage" runat="server" Text="<%$ Resources:Resource, Message %>"></asp:Label> : 
</td>
<td>
<asp:TextBox Id="txtMessage" onclick="FocusMe()" onfocus="SetToEnd(this)" runat="server" MaxLength="100" Width="500px" />
</td>
<td>
Smileys
</td>
<td>
<asp:Button Id="btnSend" CssClass="button" runat="server" Text="<%$ Resources:Resource, Send %>" OnClientClick="SetScrollPosition()" OnClick="BtnSend_Click" />
</td>
</tr>
</table>
Som I kan se har en javascript funktion i btnSend som ser ud som følgende;
function SetScrollPosition() {
var div = document.getElementById('divMessages');
//div.scrollTop = 100000000000;
div.scrollTop = div.scrollHeight;
}
Den virker ikke
Så forsøgte jeg i stedet at lave en JQuery funtion på selve div'en;
$("#divMessages").scrollTop($("#divMessages")[0].scrollHeight);
Den virker heller ikke.
Nu håber jeg I kan hjælpe mig med hvor det går galt...For jeg kan jo se andre godt kan få det til at virke - f.eks. lige nu her på eksperten.dk :-)
En anden ting (jeg ved ikke om de har sammenhæng); Jeg forsøger at sætte fokus på selve tekstbox'en på OnClick eventen med;
((ScriptManager)Page.Master.FindControl("ScriptManager1")).SetFocus((TextBox)upanChat.FindControl("txtMessage"));
Det virker bare perfekt...... Men hvis jeg i stedet bruger Enter tasten så virker det også perfekt 1. og 2. gang......Men 3 gang går det galt. Jeg kan se, at den sætter fokus (efter flere sekunder) - men forsøger jeg at bruge tastaturet sker der intet....Altså ingen bogstaver. Jeg er nødt til at klikke med musen i tekst boksen og så skrive igen før det virker...eller også vente ca. 10 sekunder...Og sådan er det så de efterfølgende gange.
Jeg har så troet det måske havde noget at gøre med min asp:timer - som har et interval på 7 secs.....Men jeg har altså efterhånden ikke andet i den en at jeg loader ChatMessages:
protected void Timer1_OnTick(object sender, EventArgs e)
{
this.LoadChatMessages();
//if (Session["DefaultWindow"] != null)
//{
// if (Session["DefaultWindow"].ToString() == "MainWindow")
// {
// this.FocusThisWindow();
// }
//}
//((ScriptManager)Page.Master.FindControl("ScriptManager1")).SetFocus((TextBox)upanChat.FindControl("txtMessage"));
}
Nogen der har en idé til hvorfor jeg ikke kan skrive umiddelbart efter jeg har klikket enter tasten i stedet for at bruge knappen?
Mvh
simsen :-)