본문 바로가기
programming/javascript

자바스크립트 글자수 제한

by hotdogya 2012. 4. 25.
문자 길이로 제한하는 경우

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title> sjisbmoc </title>
<script language=javascript>
<!--

function displayLeng( sz, id )
{
    var form = document.form;
    var obj  = document.getElementById( id );

    if (form[id].value.length > sz)
    {
        if (event.keyCode != '8') //백스페이스는 지우기작업시 바이트 체크하지 않기 위해서
        {
            alert( sz+'자까지 입력이 가능합니다.');
        }
        form[id].value = form[id].value.substring(0, sz);
    }

    document.getElementById(id+'_bytes').innerHTML = form[id].value.length+" 자";
}

//-->
</script>
    </head>
    <body>
<form name='form'>

        <textarea id='chk1' name='chk1' onkeyup='displayLeng(30,"chk1");' cols='30' rows='10'></textarea>
        <div name='chk1_bytes' id='chk1_bytes'></div>

</form>
    </body>
</html>




바이트로 제한하는 경우

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title> sjisbmoc </title>
<script language=javascript>
<!--

function displayBytes( sz, id )
{
    var form = document.form;

    var obj  = document.getElementById( id );

    if (obj.value.bytes() > sz)
    { //80바이트를 넘기면
        if (event.keyCode != '8') //백스페이스는 지우기작업시 바이트 체크하지 않기 위해서
        {
            alert( sz+'바이트까지 입력이 가능합니다.');
        }
        obj.value = obj.value.substring(0, obj.value.length-1);
    }

    eval('document.all.'+id+'_bytes').innerHTML = eval('form.'+id).value.bytes()+" byte";
}

String.prototype.bytes = function()
{
    var str = this;
    var l = 0;
    for (var i=0; i<str.length; i++) l += (str.charCodeAt(i) > 128) ? 2 : 1;
    return l;
}

//-->
</script>
    </head>
    <body>
<form name='form'>

        <textarea id='chk1' name='chk1' onkeyup='displayBytes(30,"chk1");' cols='30' rows='10'></textarea>
        <div name='chk1_bytes' id='chk1_bytes'></div>

</form>
    </body>
</html>