본문 바로가기

jQuery

[jQuery] 글자수 제한 기능 구현하기

반응형

참고 :jquery 글자수 체크 - JSFiddle



[jQuery] 글자수 제한 기능 구현하기



 트위터 혹은 게시판의 게시글을 작성할 경우 글자 입력에 제한이 있고, 얼만큼 글을 입력했는지 수치를 실시간으로 보여주는 경우가 많다. 그것을 찾다가. jquery 글자수 체크 - JSFiddle 이런 포스팅을 찾았는데 내가 사용해야 할 형태와는 조금은 달랐기에 좀 수정하였다.





① 남은 텍스트 입력양에 따라 숫자가 감소하는 경우


 사실 이 코드는 그냥 jquery 글자수 체크 - JSFiddle 이거 그대로 라고 봐도 무방하다. 아래에 내가 필요로하는 걸 만들기 전에 그냥 테스트 해본거랄까?


 textMinus.php

<html>
<head>
<script type="text/JavaScript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script type="text/javascript">
    jQuery(function() {

        jQuery('#remaining').each(function() {

            var count = jQuery("#count", this);
            var maximumCount = count.text() * 1;

            var input = jQuery(this).prev();

            var update = function() {

                var before = count.text() * 1;
                var now = maximumCount - input.val().length;

                if (now < 0) {

                    var str = input.val();
                    alert('글자 입력수가 초과하였습니다.');
                    input.val(str.substring(0, maximumCount));
                }

                if (before != now) {

                    count.text(now);
                }
            };

            input.bind('input keyup paste', function() {

                setTimeout(update, 0)
            });

            update();
        });
    });
</script>
</head>
<body>


<div class="cont_area">
    <ul>
        <li>제목</li>
        <li><input type="text" id="imageTitle" name="imageTitle" style="width:453px;"/>
            <span id="remaining">&nbsp;(<span id="count">30</span>/30)</span>
        </li>
    </ul>
</div>

</body>
</html>
 출력결과(텍스트 입력 전)

 출력결과(텍스트 입력 후)






② 남은 텍스트 입력양에 따라 숫자가 감소하는 경우


 내가 필요로 하는건 얼만큼 썯는지를 나타내는 것이 었기에 실상은 이거다. 실제로도 이게 더 많이 필요할 거라 생각한다.


 textPlus.php
<html>
<head>
<script type="text/JavaScript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
<script type="text/javascript">

    jQuery(function() {

        jQuery('#remaining').each(function() {

            var count = jQuery("#count", this);
            var max = jQuery("#max", this);
           
            var maximumCount = count.text() * 1;
            var maximumNumber = max.text() * 1;

            var input = jQuery(this).prev();

            var update = function() {

                var before = count.text() * 1;
                var now = maximumCount + input.val().length;
               
                if (now > maximumNumber) {

                    var str = input.val();
                    alert('글자 입력수가 초과하였습니다.');
                    input.val(str.substring(maximumNumber, 1));
                }
               
                if (before != now) {

                    count.text(now);
                }
            };

            input.bind('input keyup paste', function() {

                setTimeout(update, 0)
            });

            update();
        });
    });
</script>
</head>
<body>


<div class="cont_area">
    <ul>
        <li>제목</li>
        <li><input type="text" id="imageTitle" name="imageTitle" style="width:453px;"/>
            <span id="remaining">(<span id="count">0</span>/<span id="max">30</span>)</span>
        </li>
    </ul>
</div>

</body>
</html>

 출력결과(텍스트 입력 전)

 출력결과(텍스트 입력 후)


반응형