묻고답하기

[re] 폼에서

2003.02.09 00:19

풍월주인


>숫자가 아닌 문자를 입력했을 때 경고창을 띄우게 하고 싶습니다.
>
>어떻게 해야 합니까?


<html>
<head>
    <title>Untitled</title>

<script language="javascript">
function onlynum(objtext1){
        var inText = objtext1.value;
        for (var i = 0; i < inText.length; i++) {
            ret = inText.charCodeAt(i);
                if (!((ret > 47) && (ret < 58)))  {
                        alert("숫자만을 입력하세요");
                        new_value = inText.substring(0,i);
                        objtext1.value = new_value;
                        objtext1.focus();
                        return false;
                }
        }
        return true;
}
</script>
</head>

<body>
  <form name=form1 action="" onsubmit="return check()">
    <input type="text" name="test" onkeyup="onlynum(form1.test);" style="ime-mode:disabled;">
    <input type="submit" value="보내기">
  </form>
</body>
</html>


위의 소스에서 onlynum함수는 매직앤 회원가입 싸이트에서 사용된 함수를 약간 수정했습니다.
매직엔 싸이트에서는 숫자가 아닌 영어가 입력하면 폼값을 비워버리는데
여기선 유효한 부분은 그대로 남겨두도록 했습니다.
그리고 그냥 위의 함수만을 사용할 경우 한글 입력시 제대로 동작하지 않는 문제가 있어
폼 스타일에서 style="ime-mode:disabled;"를 통해 한글입력자체를 막았습니다.
전체적인 알고리즘은 텍스트 입력박스에서 글자가 입력되면 onkeyup이벤트를 통해
onlynum함수를 호출해서 숫자인지 검사하고 숫자가 아닐경우 경고창을 띄우는 방식입니다.