Avatar billede simsen Mester
11. februar 2011 - 13:33 Der er 1 kommentar og
1 løsning

Får fejl i javascript ved klik på knap i asp.net

Hej,

Aner ikke om jeg skal have mit spørgsmål her eller i asp.net gruppen ........men det er javascripten jeg har problemer med så forsøger her :-)

Først min sideopbygning;
Jeg har en MasterPage hvor jeg includer en js fil. Så har jeg min Content side, hvor jeg har selve indholdet af min side.

Jeg ønsker en javascript funktion der set scroll position (til bunden af en div) og efterfølgende sætter fokus på en textbox på siden.

Min funktion ser ud som følgende:

function SetScrollPosition() {
    var div = document.getElementById('<%=divMessages.ClientID %>');
    div.scrollTop = div.scrollHeight;
    var text = document.getElementById('<%=txtMessage.ClientID %>'); 
    text.focus(); 
    text.value = "";
}

Da jeg inkluderede den i js filen - fik jeg følgende fejl, hver gang jeg loadede siden: null is null or not an object. Googlede at det var fordi at funktionen blev loaded før siden. Jeg tog den så ind i MasterPage filen i stedet for - men den kunne så ikke finde divMessages og txtMessages (som jo også ligger i Contet siden).....Nu har jeg så puttet den ind i Contentsiden.

Nu får jeg så en anden fejl. Hver gang jeg skriver noget i textfeltet og klikker på knappen får jeg følgende fejl:
Error: Sys.WebForms.PageRequestManagerServerErrorException: Indholdet af divMessages kan ikke hentes, fordi det ikke er en konstantværdi.

Nogen der kan hjælpe mig - med at oversætte koden til JQuery - så jeg kan få den ind i min js fil imellem $(document).ready(function() { } - så den først bliver loadet når siden er oprettet?

Og ikke mindst hjælpe mig til at få den til at køre koden rigtigt - uden fejl, når jeg klikker på knappen :-)

Min kode:
aspx siden:
<script type="text/javascript">
    function SetScrollPosition() {
    var div = document.getElementById('<%=divMessages.ClientID %>');
    div.scrollTop = div.scrollHeight;
    var text = document.getElementById('<%=txtMessage.ClientID %>'); 
    text.focus(); 
    text.value = "";
}
</script>

    <asp:UpdatePanel ID="upanChat" runat="server">
        <Triggers>
        </Triggers>
        <ContentTemplate>
<table cellpadding="0" cellspacing="0" width="100%">
                            <tr>                                   
                                <td>
                                  <div id="divMessages" runat="server" class="chatMessagesItemsCell">
                                    <asp:Literal Id="litMessages" runat="server" />
                                  </div> 
                                </td>
                                <td> </td>
                            </tr>
                        </table>
                       
                       
                        <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" runat="server" MaxLength="100" Width="500px" />   
                                </td>
                                <td>
                                    Smileys
                                </td>
                                <td>
                                    <asp:Button Id="btnSend" CssClass="button" runat="server" Text="<%$ Resources:Resource, Send %>" OnClick="BtnSend_Click" />
                                </td>
                            </tr>
                        </table>
                       
                        </ContentTemplate>
                        </asp:UpdatePanel>

Button koden (og nej har intet som helst andet kode på siden udover denne;

protected void BtnSend_Click(object sender, EventArgs e)
    {
        if (txtMessage.Text.Length > 0)
        {
            litMessages.Text += txtMessage.Text;
            litMessages.Text += "<br />";

            divMessages.InnerHtml = divMessages.InnerHtml + txtMessage.Text + "<br /><br />";           
            Page.ClientScript.RegisterStartupScript(typeof(Page), "script", "SetScrollPosition()", true);
        }
    }

Mvh
simsen :-)
Avatar billede simsen Mester
11. februar 2011 - 14:04 #1
Fejlen "Error: Sys.WebForms.PageRequestManagerServerErrorException: Indholdet af divMessages kan ikke hentes, fordi det ikke er en konstantværdi." har jeg fundet ud af - det var følgende linje i min BtnSend_Click funktion der lavede den;

divMessages.InnerHtml = divMessages.InnerHtml + txtMessage.Text + "<br /><br />";

Jeg har udkommenteret den linje.......Men stadig scroller den ikke ned på sidste linje og den sætter heller ikke text boxen i fokus. Det er ligesom den bare ignorer kaldet SetScrollPosition.

Håber en eller anden kan hjælpe mig - jeg er rimelig desperat :-)
Avatar billede simsen Mester
11. februar 2011 - 20:05 #2
Og jeg har så yderligere fundet ud af at selve javascript funktionen virker...

Jeg har brugt den i body onload og der fungerer den godt nok, så det må have noget med asp.net delen, hvor jeg henter den at gøre...så lukker spørgsmålet her og opretter den i rette rum :-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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