Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript on scroll to end

Tags:

javascript

Sometimes software installers force you to scroll to the end of the EULA before the “I agree” box is enabled. How can I produce the same effect on a web page?

like image 984
Jeremy Stein Avatar asked Apr 07 '26 16:04

Jeremy Stein


2 Answers

<html>
    <head>
        <script type="text/javascript">
            function setupPage() {
                var agreement = document.getElementById("agreetext");
                var visibleHeight = agreement.clientHeight;
                var scrollableHeight = agreement.scrollHeight;
                if (scrollableHeight > visibleHeight) {
                    var checkbox = document.getElementById("agreebox");
                    checkbox.checked=false;
                    checkbox.disabled=true;
                    agreement.onscroll = handleScroll;
                }
            }

            function handleScroll() {
                var agreement = document.getElementById("agreetext");
                var visibleHeight = agreement.clientHeight;
                var scrollableHeight = agreement.scrollHeight;
                var position = agreement.scrollTop;
                if (position + visibleHeight == scrollableHeight) {
                    document.getElementById("agreebox").disabled=false;
                }
            }
        </script>
    </head>
    <body>
        <form>
            <textarea id="agreetext" rows="8" cols="40">Long agreement</textarea>
            <br/><br/>
            <input type="checkbox" id="agreebox" value="true"/> <label id="agreelabel" for="agreebox">I agree</label>
            <br/><br/>
            <input type="submit" value="Continue"/>
        </form>
        <script type="text/javascript">
            // We put this at the end of the page rather than in an document.onload
            // because the document.onload event doesn't fire until all images have loaded.
            setupPage();
        </script>
    </body>
</html>
like image 60
Jeremy Stein Avatar answered Apr 09 '26 07:04

Jeremy Stein


Excellent bit of code, if you also want to change the color in the label next to the checkbox, just modify the code as follows:

function setupPage() {
    var agreement = document.getElementById("agreetext");
    var visibleHeight = agreement.clientHeight;
    var scrollableHeight = agreement.scrollHeight;
    if (scrollableHeight > visibleHeight) {
        var checkbox = document.getElementById("agreebox");
        checkbox.checked=false;
        checkbox.disabled=true;
        document.getElementById("agreelabel").style.color = "#777";
        agreement.onscroll = handleScroll;
    }
}

function handleScroll() {
    var agreement = document.getElementById("agreetext");
    var visibleHeight = agreement.clientHeight;
    var scrollableHeight = agreement.scrollHeight;
    var position = agreement.scrollTop;
    if (position + visibleHeight == scrollableHeight) {
        document.getElementById("agreebox").disabled=false;
        document.getElementById("agreelabel").style.color = "black";
    }
}
like image 20
Myke Black Avatar answered Apr 09 '26 05:04

Myke Black



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!