Avatar billede simsen Mester
11. februar 2011 - 02:01 Der er 1 løsning

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>&nbsp;</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> :&nbsp
                                </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 :-)
Avatar billede simsen Mester
11. februar 2011 - 13:17 #1
Lukker den her - tror jeg har smidt den i den forkerte gruppe :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester