상상 너머 그 무언가...

input TextField 입력가능 문자 제한 ( restrict ) 본문

개발관련(Development)/플랙스(Flex), 에어(AIR)

input TextField 입력가능 문자 제한 ( restrict )

Clack 2013. 9. 5. 14:08

input mode의 textField에 입력가능한 문자의 범위를 지정할 수 있다.


특정 범위의 문자만 포함하거나, 특정 범위의 문자를 제외하거나 할 수 있다.



ActionScript3.0 참조 설명서에 나와있는 예제 ( TextFiled.restrict )



다음 예제에서는 대문자, 공백 및 숫자만 텍스트 필드에 입력할 수 있습니다.

     my_txt.restrict = "A-Z 0-9";
     

다음 예제에서는 소문자를 제외한 모든 문자를 포함합니다.

     my_txt.restrict = "^a-z";
     

백슬래시를 사용하여 ^ 또는 -를 입력할 수 있습니다. 또한 \-, \^, \\ 등의 백슬래시 시퀀스를 사용할 수 있습니다. 백슬래시는 문자열의 실제 문자여야 하므로 ActionScript에 지정될 때는 이중 백슬래시를 사용해야 합니다. 예를 들어 다음 코드에는 대시(-)와 캐럿(^)만 포함됩니다.

     my_txt.restrict = "\\-\\^";
     

문자열의 아무 위치에서나 ^를 사용하여 포함 문자와 제외 문자를 전환할 수 있습니다. 다음 코드는 대문자 Q를 제외한 대문자만 포함합니다.

     my_txt.restrict = "A-Z^Q";
     

\u 이스케이프 시퀀스를 사용하여 restrict 문자열을 구성할 수 있습니다. 다음 코드는 ASCII 32(공백)에서 ASCII 126(물결 표시)까지의 문자만 포함합니다.

     my_txt.restrict = "\u0020-\u007E";
     

기본값: null.



ActionScript3.0 참조 설명서에 나와있는 부분은 영어와 숫자 특수문자만 나와있는데


한글은 어떻게 해야할까?


my_txt.restrict = "ㄱ-힣";  이렇게 하면 'ㄱ' 부터 '힣' 까지 자음, 모음으로 조합가능한 모든 한글 범위를 설정할 수 있다.


하지만 예상치 못한 문제가 있다. 한글만 입력될줄 알았던 inputText에 중국어 및 한자가 입력이 된다.


이것저것 테스트 중에 해결방법을 찾았다. "가-힣"  으로 범위를 설정하면 완성된 한글만 입력이 가능한데,


ㄱ, ㅗ, ㅠㅠ 이런식으로 자음 또는 모음으로만 구성된 한글은 입력이 안되도록 설정하는것인데


한자나 중국어 들의 범위가 한글의 자음과 모음으로만 구성된 미완성된 한글들과 같은 범위대 내에 속해 있는것 으로 판단된다.


아마 1byte로 되어있는 영어나 특수문자 외의 문자들은 한 글자를 표현하는데 3byte 이상이 필요하기 때문에 같은 대역에 있는것 같다.


my_txt.restrict = "A-Z a-z 0-9 ㄱ-힣"; // 한자입력 가능
my_txt.restrict = "A-Z a-z 0-9 가-힣"; // 한자입력 차단