사용법 
파일 첨부후 
해당 input 개체에 
onKeyDown="nr_phone(this);" onKeyPress="nr_phone(this);" onKeyUp="nr_phone(this);" 
위 이벤트를 등록. 

<!-- 노멀라이즈 함수, 숫자,영어,주민번,사업자번호 체크.--> 
<script language='JavaScript' src='nr_func.js'></script> 

<input type=text name='name' size=20 maxlength=20  onKeyDown="nr_phone(this);" onKeyPress="nr_phone(this);" onKeyUp="nr_phone(this);"> 

/-------------------------------------------------------------------------------*/ 

/*-------------------------------------------------------------------------------*/ 
/* 
한글의 경우 키 입력시 바로바로 작업이 안되기 때문에 
onchange 와 onblur 등 이벤트도 같이 등록. 
*/ 

// 한글만 입력받기 (초성체 무시) 
// 나머지 글자 무시 
function nr_han(this_s,type){ 
    /* 
    type 
    -> 'c' : 초성 포함 
    -> 's' : 초성 포함 + 공백 포함 
    -> '' : 초성, 공백 무시 
    */ 
    temp_value = this_s.value.toString(); 
    regexp = ''; 
    repexp = ''; 
    switch(type){ 
        case 'c': regexp = /[^ㄱ-ㅎ가-힣]/g;break; 
        case 's': regexp = /[^ㄱ-ㅎ가-힣\s]/g;break; 
        case '':    regexp = /[^가-힣]/g; break; 
        default : regexp = /[^ㄱ-ㅎ가-힣\s]/g; 
    } 
    if(regexp.test(temp_value)) 
    { 
        temp_value = temp_value.replace(regexp,repexp); 
        this_s.value = temp_value; 
    } 
} 

/*-------------------------------------------------------------------------------*/ 

// 한글만 입력받기 (초성체 포함) 
// 나머지 글자 무시 
function nr_han_cho(this_s){ 
    nr_han(this_s,'c'); 
} 

/*-------------------------------------------------------------------------------*/ 

// 한글만 입력받기 (초성체 포함, 공백 포함) 
// 나머지 글자 무시 
function nr_han_cho_space(this_s){ 
    nr_han(this_s,'s'); 
} 


/*-------------------------------------------------------------------------------*/ 
function nr_numeng(this_s){ 
    temp_value = this_s.value.toString(); 
    regexp = /[^0-0a-zA-Z]/g; 
    repexp = ''; 
    temp_value = temp_value.replace(regexp,repexp); 
    this_s.value = temp_value; 
} 

/*-------------------------------------------------------------------------------*/ 
// 나머지 글자 무시 
function nr_num(this_s,type){ 
    /* 
    type 
    -> 'int' : 양의 정수 
    -> 'float' : 양의 실수 
    -> '-int' : 음의 정수 포함 
    -> '-int' : 음의 실수 포함 
    */ 
    temp_value = this_s.value.toString(); 
    regexp = /[^-\.0-9]/g; 
    repexp = ''; 
    temp_value = temp_value.replace(regexp,repexp); 
    regexp = ''; 
    repexp = ''; 
    switch(type){ 
        case 'int':     regexp = /[^0-9]/g; break; 
        case 'float':regexp = /^(-?)([0-9]*)(\.?)([^0-9]*)([0-9]*)([^0-9]*)/; break; 
        case '-int':    regexp = /^(-?)([0-9]*)([^0-9]*)([0-9]*)([^0-9]*)/;break; 
        case '-float':regexp = /^(-?)([0-9]*)(\.?)([^0-9]*)([0-9]*)([^0-9]*)/; break; 
        default : regexp = /[^0-9]/g; break; 
    } 
    switch(type){ 
        case 'int':repexp = '';break; 
        case 'float':repexp = '$2$3$5';break; 
        case '-int':    repexp = '$1$2$4';break; 
        case '-float':repexp = '$1$2$3$5'; break; 
        default : regexp = /[^0-9]/g; break; 
    } 
    temp_value = temp_value.replace(regexp,repexp); 
    this_s.value = temp_value; 
} 
// 양의 정수만 입력받기 
function nr_num_int(this_s){ 
    nr_num(this_s,'int'); 
} 
// 양의 실수만 입력받기 
function nr_num_float(this_s){ 
    nr_num(this_s,'float'); 
} 

/*-------------------------------------------------------------------------------*/ 

// 영어만 입력받기  (대소문자) 
// 나머지 글자 무시 
function nr_eng(this_s,type){ 
    temp_value = this_s.value.toString(); 
    regexp = ''; 
    repexp = ''; 
    switch(type){ 
        case 'small':regexp = /[^a-z]/g;break; 
        case 'big':regexp = /[^A-Z]/g;break; 
        case 'all':regexp = /[^a-z]/i;break; 
        default :regexp = /[^a-z]/i;break; 
    } 
    temp_value = temp_value.replace(regexp,repexp); 
    this_s.value = temp_value; 
} 

// 영어만 입력받기  (소문자) 
// 나머지 글자 무시 
function nr_eng_small(this_s){ 
    nr_eng(this_s,'small'); 
} 

// 영어만 입력받기  (대문자) 
// 나머지 글자 무시 
function nr_eng_big(this_s){ 
    nr_eng(this_s,'big'); 
} 
// 전화번호 규격에 맞게 DDD-MM~M-XXXX 
// 나머지 글자 무시 
function nr_phone(this_s) 
{ 
    temp_value = this_s.value.toString(); 
    temp_value = temp_value.replace(/[^0-9]/g,''); 
    temp_value = temp_value.replace(/(0(?:2|[0-9]{2}))([0-9]+)([0-9]{4}$)/,"$1-$2-$3"); 
    this_s.value = temp_value; 
} 

/*-------------------------------------------------------------------------------*/ 


// 주민등록 번호 규격에 맞게 123456-1234567  //검증하지 않음. 
// 나머지 글자 무시 
function nr_jumin(this_s) 
{ 
    temp_value = this_s.value.toString(); 
    temp_value = temp_value.replace(/[^0-9]/g,''); 
    temp_value = temp_value.substr(0,13); 
    temp_value = temp_value.replace(/([0-9]{6})([0-9]{7}$)/,"$1-$2"); 
    this_s.value = temp_value; 
} 



/*-------------------------------------------------------------------------------*/ 

// 사업자 등록 번호 규격에 맞게 123-12-12345  //검증하지 않음. 
// 나머지 글자 무시 
function nr_company_num(this_s) 
{ 
    temp_value = this_s.value.toString(); 
    temp_value = temp_value.replace(/[^0-9]/g,''); 
    temp_value = temp_value.substr(0,10); 
    temp_value = temp_value.replace(/([0-9]{3})([0-9]{2})([0-9]{5}$)/,"$1-$2-$3"); 
    this_s.value = temp_value; 
} 

//----------------------------------------------=-------------------------------------- 
그냥 전에 만들었고, 가져왔던 것을 모음집으로 만든겁니다. 
숫자의 경우 음수도 체크하도록 했습니다. 
뭐, 따지면 더 간단한 방법도 있을겁니다. 

#사용법은? 

<!-- 노멀라이즈 함수, 숫자,영어,주민번,사업자번호 체크.--> 
<script language='JavaScript' src='nr_func.js'></script> 

<input type=text name='name' size=20 maxlength=20  onKeyDown="nr_phone(this);" onKeyPress="nr_phone(this);" onKeyUp="nr_phone(this);"> 

이처럼 .js로 만들든 어쨌든 
HTML에 집어 넣고 

onKeyDown="nr_phone(this);" onKeyPress="nr_phone(this);" onKeyUp="nr_phone(this);" 
이렇게 이벤트를 등록하면 됩니다. 

#주의점은? 

한글 체크의 경우 한글을 적을 때 바로바로 onKeyXXXX()이벤트가 일어나지 않습니다. 
onblur()와 onChange()도 같이 등록해주세요. 

#동작은? 

해당 함수에서 값을 체크해서 정해진 값이 아니면 
전부 무시해버립니다. 
즉, 양의 정수만 입력이 가능한 
nr_num_int()는 숫자만 입력이 가능합니다. 나머지 글자는 무시!

/** 
* 입력값이 NULL인지 체크 
*/ 
function isNull(input) { 
if (input.value == null || input.value == "") { 
return true; 
} 
return false; 
} 

/** 
* 입력값에 스페이스 이외의 의미있는 값이 있는지 체크 
* ex) if (isEmpty(form.keyword)) { 
* alert!("검색조건을 입력하세요."); 
* } 
*/ 
function isEmpty(input) { 
if (input.value == null || input.value.replace(/ /gi,"") == "") { 
return true; 
} 
return false; 
} 

/** 
* 입력값에 특정 문자(chars)가 있는지 체크 
* 특정 문자를 허용하지 않으려 할 때 사용 
* ex) if (containsChars(form.name,"!,*&^%$#@~;")) { 
* alert!("이름 필드에는 특수 문자를 사용할 수 없습니다."); 
* } 
*/ 
function containsChars(input,chars) { 
for (var inx = 0; inx < input.value.length; inx++) { 
if (chars.indexOf(input.value.charAt(inx)) != -1) 
return true; 
} 
return false; 
} 

/** 
* 입력값이 특정 문자(chars)만으로 되어있는지 체크 
* 특정 문자만 허용하려 할 때 사용 
* ex) if (!containsCharsOnly(form.blood,"ABO")) { 
* alert!("혈액형 필드에는 A,B,O 문자만 사용할 수 있습니다."); 
* } 
*/ 
function containsCharsOnly(input,chars) { 
for (var inx = 0; inx < input.value.length; inx++) { 
if (chars.indexOf(input.value.charAt(inx)) == -1) 
return false; 
} 
return true; 
} 

/** 
* 입력값이 알파벳인지 체크 
* 아래 isAlphabet() 부터 isNumComma()까지의 메소드가 
* 자주 쓰이는 경우에는 var chars 변수를 
* global 변수로 선언하고 사용하도록 한다. 
* ex) var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
* var lowercase = "abcdefghijklmnopqrstuvwxyz"; 
* var number = "0123456789"; 
* function isAlphaNum(input) { 
* var chars = uppercase + lowercase + number; 
* return containsCharsOnly(input,chars); 
* } 
*/ 
function isAlphabet(input) { 
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
return containsCharsOnly(input,chars); 
} 

/** 
* 입력값이 알파벳 대문자인지 체크 
*/ 
function isUpperCase(input) { 
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; 
return containsCharsOnly(input,chars); 
} 

/** 
* 입력값이 알파벳 소문자인지 체크 
*/ 
function isLowerCase(input) { 
var chars = "abcdefghijklmnopqrstuvwxyz"; 
return containsCharsOnly(input,chars); 
} 

/** 
* 입력값에 숫자만 있는지 체크 
*/ 
function isNumber(input) { 
var chars = "0123456789"; 
return containsCharsOnly(input,chars); 
} 

/** 
* 입력값이 알파벳,숫자로 되어있는지 체크 
*/ 
function isAlphaNum(input) { 
var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 
return containsCharsOnly(input,chars); 
} 

/** 
* 입력값이 숫자,대시(-)로 되어있는지 체크 
*/ 
function isNumDash(input) { 
var chars = "-0123456789"; 
return containsCharsOnly(input,chars); 
} 

/** 
* 입력값이 숫자,콤마(,)로 되어있는지 체크 
*/ 
function isNumComma(input) { 
var chars = ",0123456789"; 
return containsCharsOnly(input,chars); 
} 

/** 
* 입력값이 사용자가 정의한 포맷 형식인지 체크 
* 자세한 format 형식은 자바스크립트의 'regular expression!'을 참조 
*/ 
function isValidFormat(input,format) { 
if (input.value.search(format) != -1) { 
return true; //올바른 포맷 형식 
} 
return false; 
} 

/** 
* 입력값이 이메일 형식인지 체크 
* ex) if (!isValidEmail(form.email)) { 
* alert!("올바른 이메일 주소가 아닙니다."); 
* } 
*/ 
function isValidEmail(input) { 
// var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/; 
var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/; 
return isValidFormat(input,format); 
} 

/** 
* 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크 
*/ 
function isValidPhone(input) { 
var format = /^(\d+)-(\d+)-(\d+)$/; 
return isValidFormat(input,format); 
} 

/** 
* 입력값의 바이트 길이를 리턴 
* ex) if (getByteLength(form.title) > 100) { 
* alert!("제목은 한글 50자(영문 100자) 이상 입력할 수 없습니다."); 
* } 
* Author : Wonyoung Lee 
*/ 
function getByteLength(input) { 
var byteLength = 0; 
for (var inx = 0; inx < input.value.length; inx++) { 
var oneChar = escape(input.value.charAt(inx)); 
if ( oneChar.length == 1 ) { 
byteLength ++; 
} else if (oneChar.indexOf("%u") != -1) { 
byteLength += 2; 
} else if (oneChar.indexOf("%") != -1) { 
byteLength += oneChar.length/3; 
} 
} 
return byteLength; 
} 

/** 
* 입력값에서 콤마를 없앤다. 
*/ 
function removeComma(input) { 
return input.value.replace(/,/gi,""); 
} 

/** 
* 선택된 라디오버튼이 있는지 체크 
*/ 
function hasCheckedRadio(input) { 
if (input.length > 1) { 
for (var inx = 0; inx < input.length; inx++) { 
if (input[inx].checked) return true; 
} 
} else { 
if (input.checked) return true; 
} 
return false; 
} 

/** 
* 선택된 체크박스가 있는지 체크 
*/ 
function hasCheckedBox(input) { 
return hasCheckedRadio(input); 
} 


 

onkeydown 이벤트 발생시 event.keyCode 값과

onkeypress 이벤트 발생시 event.keyCode 값이 다르다는 것을 알았다.

 

onkeypress 이벤트 발생시 event.keyCode 값은 다음과 같다.

 

이는 ASCII 값과 같음을 알게 되었다.

 

 

이벤트(Event) Key code 정리

키코드

사용키(시스템)

키코드

사용키(숫자)

13

ENTER

48

0

27

ESC

49

1

32

SPACE BAR

50

2

 

 

51

3

 

 

52

4

 

 

53

5

 

 

54

6

 

 

55

7

 

 

56

8

 

 

57

9

키코드

사용키(영어 대문자)

키코드

사용키(영어 소문자)

65

A

97

a

66

B

98

b

67

C

99

c

68

D

100

d

69

E

101

e

70

F

102

f

71

G

103

g

72

H

104

h

73

I

105

i

74

J

106

j

75

K

107

k

76

L

108

l

77

M

109

m

78

N

110

n

79

O

111

o

80

P

112

p

81

Q

113

q

82

R

114

r

83

S

115

s

84

T

116

t

85

U

117

u

86

V

118

v

87

W

119

w

88

X

120

x

89

Y

121

y

90

Z

122

z

키코드

사용키(특수문자)

키코드

사용키(특수문자)

33

!

58

:

34

"

59

;

35

#

60

<

36

$

61

=

37

%

62

>

38

&

63

?

39

'

64

@

40

(

91

[

41

)

92

\

42

*

93

]

43

+

94

^

44

,

95

_

45

-

96

`

46

.

123

{

47

/

124

|

 

 

125

}

 

 

126

~



+ Recent posts