scroll textbox to bottom? (IE)

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Mad Scientist Jr

    scroll textbox to bottom? (IE)

    I have a textbox that i am adding to (in codebehind of ASP.NET) and
    need to ensure that the focus is scrolled to the bottom of the textbox
    each time the page refreshes, and then set focus to a 2nd textbox
    (which the user types input into).

    I have tried a couple functions I found posted online but they don't
    work (see below)

    The closest I got was using the scrolldown method:


    url=/workshop/author/dhtml/reference/methods/doscroll.asp

    but this only scrolls down at most 1 page. How do I scroll to the
    absolute bottom no matter how much text is in the box?

    Thanks



    in Head:

    <script type="text/javascript">
    function focusById(elemi d)
    {
    elem = document.getEle mentById(elemid );
    if(elem)
    {
    elem.focus();
    MoveToEnd(elem) ;
    elem.focus();
    }
    }

    function MoveToEnd(Eleme nt)
    {
    if ( Element.createT extRange )
    Element.createT extRange().text += "";
    else if ( Element.inserti onPoint )
    Element.inserti onPoint = Element.text.le ngth;
    }

    </script>
    </HEAD>


    In onload (various versions, #6 sort of worked):


    // SCROLL TO BOTTOM OF TEXTBOX #1 AND SET FOCUS ON TEXTBOX #2

    //ATTEMPT #1
    focusById(docum ent.Form1.Textb ox1);
    document.Form1. Textbox2.focus( );

    //ATTEMPT #2
    var sText=document. Form1.Textbox1. value;
    document.Form1. Textbox1.value= sText;
    document.Form1. Textbox2.focus( );

    //ATTEMPT #3
    document.Form1. Textbox1.focus( );
    document.Form1. Textbox1.MoveTo End(elem);
    document.Form1. Textbox1.elem.f ocus();
    document.Form1. Textbox2.focus( );

    //ATTEMPT #4
    document.Form1. Textbox1.focus( );
    document.Form1. Textbox1.MoveTo End(elem);
    document.Form1. Textbox1.elem.f ocus();
    document.Form1. Textbox1.doScro ll();
    document.Form1. Textbox2.focus( );

    //ATTEMPT #5
    MoveToEnd(docum ent.Form1.Textb ox1);
    document.Form1. Textbox2.focus( );

    //ATTEMPT #6
    //seemed to work but only scrolls down a little
    //how do i scroll to the absolute end
    //no matter how much text is in Textbox1 ?
    MoveToEnd(docum ent.Form1.Textb ox1);
    document.Form1. Textbox1.doScro ll('down');
    document.Form1. Textbox2.focus( );

    //ATTEMPT #7
    document.Form1. Textbox1.doScro ll('down');
    document.Form1. Textbox2.focus( )

  • Zifud

    #2
    Re: scroll textbox to bottom? (IE)

    Mad Scientist Jr wrote:[color=blue]
    > I have a textbox that i am adding to (in codebehind of ASP.NET) and
    > need to ensure that the focus is scrolled to the bottom of the textbox
    > each time the page refreshes, and then set focus to a 2nd textbox
    > (which the user types input into).[/color]

    Isn't this what HTML anchors are for?

    Add an anchor at the appropriate place, then modify the
    document.locati on. The browser will then work out how much to scroll
    and it is likely far more cross-browser than a "scroll by" method.


    --
    Zif

    Comment

    • Mad Scientist Jr

      #3
      Re: scroll textbox to bottom? (IE)

      thanks for your reply...
      what I am trying to accomplish is to scroll to the bottom of a text
      area in a form (inside the textarea), not the bottom of the html page
      itself.

      Comment

      • RobB

        #4
        Re: scroll textbox to bottom? (IE)

        Mad Scientist Jr wrote:[color=blue]
        > I have a textbox that i am adding to (in codebehind of ASP.NET) and
        > need to ensure that the focus is scrolled to the bottom of the[/color]
        textbox[color=blue]
        > each time the page refreshes, and then set focus to a 2nd textbox
        > (which the user types input into).
        >
        > I have tried a couple functions I found posted online but they don't
        > work (see below)
        >
        > The closest I got was using the scrolldown method:
        >
        > http://msdn.microsoft.com/library/default.asp?
        > url=/workshop/author/dhtml/reference/methods/doscroll.asp
        >
        > but this only scrolls down at most 1 page. How do I scroll to the
        > absolute bottom no matter how much text is in the box?
        >
        > Thanks
        >
        >
        >
        > in Head:
        >
        > <script type="text/javascript">
        > function focusById(elemi d)
        > {
        > elem = document.getEle mentById(elemid );
        > if(elem)
        > {
        > elem.focus();
        > MoveToEnd(elem) ;
        > elem.focus();
        > }
        > }
        >
        > function MoveToEnd(Eleme nt)
        > {
        > if ( Element.createT extRange )
        > Element.createT extRange().text += "";
        > else if ( Element.inserti onPoint )
        > Element.inserti onPoint = Element.text.le ngth;
        > }
        >
        > </script>
        > </HEAD>
        >
        >
        > In onload (various versions, #6 sort of worked):
        >
        >
        > // SCROLL TO BOTTOM OF TEXTBOX #1 AND SET FOCUS ON TEXTBOX #2
        >
        > //ATTEMPT #1
        > focusById(docum ent.Form1.Textb ox1);
        > document.Form1. Textbox2.focus( );
        >
        > //ATTEMPT #2
        > var sText=document. Form1.Textbox1. value;
        > document.Form1. Textbox1.value= sText;
        > document.Form1. Textbox2.focus( );
        >
        > //ATTEMPT #3
        > document.Form1. Textbox1.focus( );
        > document.Form1. Textbox1.MoveTo End(elem);
        > document.Form1. Textbox1.elem.f ocus();
        > document.Form1. Textbox2.focus( );
        >
        > //ATTEMPT #4
        > document.Form1. Textbox1.focus( );
        > document.Form1. Textbox1.MoveTo End(elem);
        > document.Form1. Textbox1.elem.f ocus();
        > document.Form1. Textbox1.doScro ll();
        > document.Form1. Textbox2.focus( );
        >
        > //ATTEMPT #5
        > MoveToEnd(docum ent.Form1.Textb ox1);
        > document.Form1. Textbox2.focus( );
        >
        > //ATTEMPT #6
        > //seemed to work but only scrolls down a little
        > //how do i scroll to the absolute end
        > //no matter how much text is in Textbox1 ?
        > MoveToEnd(docum ent.Form1.Textb ox1);
        > document.Form1. Textbox1.doScro ll('down');
        > document.Form1. Textbox2.focus( );
        >
        > //ATTEMPT #7
        > document.Form1. Textbox1.doScro ll('down');
        > document.Form1. Textbox2.focus( )[/color]

        Mad:

        window.onload = function()
        {
        setTimeout(
        'document.getEl ementById("Text box1").scrollTo p=10000'
        ,50
        );
        document.getEle mentById("Textb ox2").focus();
        }

        You may be confusing older style (DOM 0) hierarchial object references,
        which use form/element names (document.form_ name.field_name ) with DOM
        1+ document.getEle mentById, which uses the element's (string) id
        assigned via HTML. Be sure and id the fields as well for the above to
        work. The timer delay is just an expedient necessary in some browsers
        to allow the field to 'set up' before scripting it. Element.scrollT op
        is well-supported by now; the high value assures (more or less) that
        the entire element will be scrolled.

        Comment

        • Mad Scientist Jr

          #5
          Re: scroll textbox to bottom? (IE)

          I got it working great - just count the # of carriage returns on the
          asp.net codebehind (carriage returns = mystring.len - replace(mystrin g,
          vbcrlf) / 2) and divide it by the # of rows in the textbox to get
          "pages", and send that number as a parameter X to a javascript function
          with a doScroll(pagedo wn), which page downs X times, That way it is
          guaranteed to be the correct # of pages, and pagedown is FAST (doing
          scroll down by # of lines is slow, you can literally see the textarea
          scroll!). Anyway it works great !

          Comment

          Working...