디지털 컨버전스/Java Script

[JQuery] 채팅 박스 만들기

gimyeondong 2020. 4. 20. 16:35

 

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="https://code.jquery.com/jquery-3.5.0.js" integrity="sha256-r/AaFHrszJtwpe+tHyNi/XCfMxYpbsRg2Uqn0x3s2zc=" crossorigin="anonymous"></script>

    </head>
    <style>

        .wrapper{
            border: 1px solid black;
            width: 250px;
            height: 250px;

        }

        input{

            height: 100%;
        }
        #topbox{
            width:100%;
            height:80%;
            overflow-y:auto;
            word-wrap: break-word;
            word-break: break-all;
        }
        #box{
            width: 100%;
        }

    </style>
    <script>

        function updateScroll(){
            var element = document.getElementById("topbox");
            element.scrollTop=element.scrollHeight;
        }

        $(function(){


            $("#send").on("click",function(){

                var msg = $("#input").val();

                var tr = $("<tr></tr");
                tr.append("<td>"+msg);
                $("#box").append(tr);
                $("#input").val("");

                //var maxScroll = $("#box").height() - $("#topbox").height();
                //$("#topbox").scrollTop(maxScroll);
                updateScroll();
            })

            $("#input").on("keyup",function(e){
                if(e.keyCode == 13){
                    var msg = $("#input").val();
                    var tr = $("<tr></tr");
                    tr.append("<td>"+msg);
                    $("#box").append(tr);
                    $("#input").val("");

                    updateScroll();
                }
            })



        })
    </script>
    <body>
        <div class="wrapper">
            <div id=topbox>

                <table id="box"></table>

            </div>

            <div id="bottombox">
                <input type="text" id="input">
                <input type="button" value="send" id="send">
            </div>
        </div>

    </body>
</html>

세로는 스크롤, 가로는 줄바꿈

        #topbox{
            width:100%;
            height:80%;
            overflow-y:auto;
            word-wrap: break-word;
            word-break: break-all;
        }

채팅창 스크롤 변경

                //var maxScroll = $("#box").height() - $("#topbox").height();
                //$("#topbox").scrollTop(maxScroll);

출처 : https://smujihoon.tistory.com/134

 

        function updateScroll(){
            var element = document.getElementById("topbox");
            element.scrollTop=element.scrollHeight;
        }

엔터 입력

키코드 13 == enter

            $("#input").on("keyup",function(e){
                if(e.keyCode == 13){
                    var msg = $("#input").val();
                    var tr = $("<tr></tr");
                    tr.append("<td>"+msg);
                    $("#box").append(tr);
                    $("#input").val("");

                    updateScroll();
                }
            })

강사님 코드

더보기
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="https://code.jquery.com/jquery-3.5.0.min.js"></script>
        <style>
            *{box-sizing: border-box;}
            div{border:1px solid black;}
            .container{width:300px;height:300px;margin:auto;}
            .chat{width:100%;height:80%;overflow-y:auto;word-wrap: break-word; word-break: break-all;}
            .input{width:100%;height:20%;}
            .msg_div{float:left;width:80%;height:100%;}
            #msg{width:100%;height:100%;}
            .send_div{float:left;width:20%;height:100%;}
            #send{width:100%;height:100%;}
        </style>
        <script>

            function updateScroll(){
                var element = document.getElementById("chat");
                element.scrollTop = element.scrollHeight;
            }

            $(function(){
                $("#send").on("click",function(){
                    var msg = $("#msg").val();
                    var line = $("<div></div>");
                    line.append(msg);

                    $(".chat").append(line);
                    $("#msg").val("");
                    updateScroll();
                })

                $("#msg").on("keyup",function(e){
                    if(e.keyCode == 13){
                        var msg = $("#msg").val();
                        var line = $("<div></div>");
                        line.append(msg);

                        $(".chat").append(line);
                        $("#msg").val("");
                        updateScroll();
                    }
                })
            })
        </script>
    </head>
    <body>
        <div class="container">
            <div class="chat" id="chat">

            </div>
            <div class="input">
                <div class="msg_div">
                    <input type=text id=msg>
                </div>
                <div class="send_div">
                    <input type=button id=send value="send">
                </div>
            </div>
        </div>
    </body>
</html>

 

cf. 클래스네임으로 가져오면 배열, [0]로 선택