본문으로 건너뛰기

TextBox

이 컨트롤은 무엇인가요?

TextBox는 네이티브 <input type="text"> 요소를 확장(enhancement)해서 다양한 입력 형식을 자동으로 처리해 주는 컨트롤입니다. syn-options 속성에 editType을 지정하는 것만으로 아래와 같은 서브타입을 사용할 수 있습니다.

분류editType 값설명
일반 텍스트text (기본값)일반 문자열 입력
영문/대소문자english, uppercase, lowercase입력 중 한글 제거, 대문자/소문자 강제 변환
숫자number, numeric숫자만 입력, numeric은 blur 시 3자리 콤마 통화 서식(formatNumber) 적용
숫자 스피너spinner증감 버튼이 붙은 숫자 입력(ISpin)
날짜/시간year, date, yearmonth, hour, minute, time5, time8각 형식에 맞는 blur 검증과 자동 포맷팅(HH:MM, HH:MM:SS 등)
전화번호homephone, mobilephone, phone지역/휴대전화 번호 패턴 검사 후 - 포함 형식으로 자동 변환
이메일emailblur 시 이메일 형식 검증
등록번호juminno(주민등록번호), businessno(사업자번호, 체크섬 검증), corporateno(법인번호, 체크섬 검증)자동 마스킹 및 유효성 검사
커스텀 마스크maskPattern 옵션(VMasker 패턴, 예: '999-99-99999')임의의 입력 마스크 지정
자동완성 목록datalistID / datalistItems / datalistUrlHTML <datalist> 연동, 정적/원격 데이터소스 로딩 지원

이 외에도 maxlength(또는 maxlengthB, 한글 등 2byte 문자 기준 길이 제한) 지정 시 blur 시점에 길이 초과 알림을 띄워 줍니다.

언제 사용하나요?

  • 일반 입력 필드부터 전화번호, 이메일, 주민/사업자/법인번호, 날짜/시간 조각, 숫자 서식까지 - "글자를 입력받는" 대부분의 화면 요소에 사용합니다.
  • 드롭다운으로 만들기엔 항목이 유동적이거나 사용자가 직접 입력해야 하지만 자동완성 힌트가 필요한 경우 datalistItems/datalistUrl을 사용합니다.
  • 폼 전송(transactConfig) 시 서버 검증 전에 클라이언트에서 형식을 걸러내고 싶을 때 validators 옵션(require, unique, numeric, ipaddress, email, date, url 등)을 함께 지정합니다.

빠른 시작

<input id="txtName" type="text" syn-options="{editType: 'text', maxCount: null}">
<input id="txtPhone" type="text" syn-options="{editType: 'homephone'}">
<input id="txtAmount" type="text" syn-options="{editType: 'numeric', minCount: 0, maxCount: 100000}">

<script src="/js/syn.loader.js"></script>

syn.loader.js 한 줄만 추가하면 필요한 CSS/JS가 자동으로 주입되고, 페이지가 로드될 때 위 입력창들이 각 editType에 맞는 동작(포맷팅, 검증, 마스킹)을 갖추게 됩니다.

값을 읽고 쓸 때는 컨트롤 API를 사용합니다.

var value = syn.uicontrols.$textbox.getValue('txtAmount');
syn.uicontrols.$textbox.setValue('txtAmount', 12345);
syn.uicontrols.$textbox.clear('txtAmount');

예제 실행하기

아래 예제 파일들을 브라우저로 열어 실제 동작을 확인할 수 있습니다. (/uicontrols/TextBox/example/ 경로)

  • basic.html - 일반 텍스트, 영문/대소문자 강제, maxlength 예제
  • numberformat.html - 숫자(number/numeric), 스피너(spinner) 서식 예제
  • textvalidation.html - 전화번호/이메일/등록번호/날짜/시간 등 형식 검증 예제
  • events.html - datalist 자동완성, getValue/setValue/clear 및 이벤트 로그 예제

각 예제는 <script src="/js/syn.loader.js"></script> 한 줄만으로 동작하며, 버튼을 눌러 콘솔/로그 영역에서 결과를 확인할 수 있습니다.

더 알아보기

  • 자세한 옵션/메서드/이벤트 목록은 같은 폴더의 아래 API 참조 섹션를 참고하세요.
  • 실제 소스는 TextBox.js, TextBox.css 파일을 참고하세요.

실전 예제 페이지

/uicontrols/TextBox/example/ 경로의 예제를 아래 iframe에서 바로 확인할 수 있습니다.

basic.html

events.html

numberformat.html

textvalidation.html

소스와 로드 파일

항목내용
컨트롤TextBox
전역 별칭syn.uicontrols.$textbox
버전v2026.1.3
소스uicontrols/TextBox/TextBox.js
스타일uicontrols/TextBox/TextBox.css

API 참조

syn.uicontrols.$textbox

마크업

TextBox는 네이티브 <input type="text"> 요소에 syn-options 속성으로 옵션을 JSON 형태로 지정해서 사용합니다.

<input id="txtSample" type="text" syn-options="{editType: 'text'}">
  • 값 변경 등 이벤트 핸들러를 페이지 스크립트에서 받으려면 syn-events="['change']"처럼 이벤트 이름 배열을 지정하고, 페이지 .jsevent.<elID>_<eventName>(evt) 함수를 정의합니다.
  • 글자 수 제한은 표준 HTML maxlength 속성, 또는 한글 등 2byte 문자를 고려한 길이 제한이 필요하면 maxlengthB 속성을 사용합니다. 둘 중 하나라도 지정하면 blur 시 초과 여부를 검사해 안내창을 띄웁니다.
  • 자동완성 목록은 list 속성(datalist)이 내부적으로 자동 생성/연결되므로 별도 마크업이 필요 없습니다.

Options (defaultSetting)

옵션타입/기본값설명
editTypestring, 기본 'text'서브타입 지정. 아래 표 참고
inValidateClearboolean, 기본 truecorporateno 등 형식 오류 시 값을 지울지(true) 빨간 글자로 표시만 할지(false) 결정
formatNumberboolean, 기본 truenumeric 타입에서 blur 시 3자리 콤마(통화) 서식 적용 여부
maskPatternstring, 기본 nullVMasker 입력 마스크 패턴 (예: '99:99', '999-99-99999', '(99) SSSS-AAAA')
maxCountnumber, 기본 nullnumber/numeric/spinner에서 허용 최대값
minCountnumber, 기본 0number/numeric/spinner에서 허용 최소값
allowCharsarray, 기본 []english 타입 blur 검증 시 예외 허용할 값 목록
placeTextarray/string, 기본 []superplaceholder로 표시할 안내 문구(1개 이상이면 문구가 순환 표시됨)
defaultSetValuestring, 기본 '0'기본 설정값(참고용)
dataTypestring, 기본 'string'clear() 호출 시 되돌릴 값의 데이터 타입(string, int 등)
belongIDstring, 기본 null소속 그룹/프레임 식별자
getter / setterboolean, 기본 falsetrue이면 getValue/setValue 시 페이지 훅(mod.hook.frameEvent)을 거쳐 값 가공
controlTextstring, 기본 null검증 실패 메시지 등에 사용되는 컨트롤 표시명(로케일 처리 대상)
validatorsarray, 기본 null폼 전송(transactConfig) 시 적용할 검증 규칙 배열. 예: ['require', 'email'], ['require', 'numeric']. 실제 검증은 $validation.transactionValidate가 수행
transactConfigobject, 기본 null트랜잭션(서버 전송) 연동 설정
triggerConfigobject, 기본 null값이 비어 있을 때 참조할 트리거 옵션 연동 설정
datalistIDstring, 기본 null사용할 <datalist> id (미지정 시 elID + '_datalist' 자동 생성)
datalistItemsarray, 기본 []정적 자동완성 목록. 문자열 배열 또는 객체 설정 객체 배열
datalistUrlstring, 기본 nullfocus 시 원격에서 자동완성 목록을 로드할 URL
datalistValueField / datalistLabelFieldstring, 기본 'value'/'label'원격 응답에서 값/라벨로 사용할 필드명
dataSourceID / storeSourceIDstring, 기본 null코드성 데이터소스(원격 또는 로컬 캐시) 연동용 ID
parametersobject, 기본 null원격 데이터소스 조회 시 전달할 파라미터
localboolean, 기본 true데이터소스를 로컬 캐시(code/{storeSourceID}.json)에서 가져올지 여부
sharedAssetUrlstring, 기본 ''로컬 데이터소스 JSON 조회 시 사용할 기준 URL(미지정 시 syn.Config.SharedAssetUrl)

editType 값 목록

editType동작 요약
text일반 텍스트, 별도 변환 없음
english한글 입력 차단(영문/숫자/_만 허용), textCase 옵션으로 대소문자 강제 가능
uppercase영문 대문자만 허용
lowercase영문 소문자만 허용
number숫자/-만 입력, blur 시 minCount/maxCount 범위로 보정 (콤마 서식 없음)
numeric숫자/-만 입력, blur 시 minCount/maxCount 보정 + formatNumber가 true면 콤마 통화 서식 적용
spinnernumeric과 동일한 입력 규칙 + 증감 버튼(ISpin, minCount~maxCount, step 1/pageStep 10)
year4자리 연도, blur 시 유효 연도 검증
date8자리 또는 yyyy-MM-dd, blur 시 유효 일자 검증
yearmonthyyyy-MM, blur 시 유효 연월 검증
hour0~23 범위 보정, 1자리면 0 패딩
minute0~59 범위 보정, 1자리면 0 패딩
time5HH:MM 형식, 자동 마스크(99:99) + 유효성 검사
time8HH:MM:SS 형식, 자동 마스크(99:99:99) + 유효성 검사
homephone지역/일반 전화번호, blur 시 자동으로 - 삽입, 형식 오류면 값 비움
mobilephone휴대전화번호(01x), blur 시 자동으로 - 삽입
phone휴대전화/지역전화 모두 허용하는 통합 전화번호
emailblur 시 이메일 형식 검증, 실패 시 값 비움
juminno주민등록번호, 기본 마스크 999999-9999999, 정규식 검증
businessno사업자등록번호, 기본 마스크 999-99-99999, 체크섬(isBusinessNo) 검증
corporateno법인등록번호, 기본 마스크 999999-9999999, 체크섬(isCorporateNo) 검증. inValidateClear=false면 오류 시 값을 비우지 않고 빨간 굵은 글씨로만 표시

메서드

메서드매개변수설명
controlLoad(elID, setting)요소 id, 옵션 객체컨트롤 초기화(내부적으로 페이지 로드시 자동 호출됨)
getValue(elID)요소 id현재 값 반환. number/numeric은 콤마 제거된 숫자 문자열로 반환
setValue(elID, value)요소 id, 값값 설정. number/numeric이면 숫자 값을 통화 서식으로 변환해 표시. valueundefined/null이면 triggerConfig 옵션 값 또는 빈 문자열로 대체
clear(elID, isControlLoad)요소 iddataType 옵션에 맞는 기본값으로 초기화
dataRefresh(elID, setting, callback)요소 id, 옵션, 콜백dataSourceID/storeSourceID 데이터를 다시 조회해 자동완성 목록 갱신
setDatalistItems(elID, items)요소 id, 배열자동완성(datalist) 목록 전체 교체
addDatalistItem(elID, item)요소 id, 항목자동완성 목록에 항목 1개 추가
removeDatalistItem(elID, value)요소 id, 값자동완성 목록에서 값이 일치하는 항목 제거
clearDatalistItems(elID)요소 id자동완성 목록 전체 비우기
getDatalistItems(elID)요소 id현재 저장된 자동완성 목록 배열 반환
loadDatalistItems(elID, url, callback)요소 id, URL(선택), 콜백(선택)원격 URL에서 자동완성 목록을 로드
filterDatalistItems(elID, filterText)요소 id, 검색어저장된 전체 목록 중 값/라벨에 검색어가 포함된 항목만 표시
setLocale(elID, translations, control, options)-다국어 리소스에 맞춰 placeholder/controlText 갱신

이벤트 (syn-events)

TextBox는 editType에 따라 내부적으로 focus/blur/input 이벤트를 자동으로 연결해 형식 변환·검증을 수행합니다. 페이지에서 별도 로직을 실행하려면 표준 DOM 이벤트 이름을 syn-events에 지정하면 됩니다.

이벤트설명
change값이 변경되고 포커스가 벗어날 때
input값 입력 중(키 입력 등)
focus포커스를 받았을 때
blur포커스를 잃었을 때(내부적으로 서식/검증이 먼저 수행된 뒤 호출됨)
click클릭 시(버튼 등 다른 요소와 조합 시 주로 사용)
<input id="txtEmail" type="text" syn-options="{editType: 'email'}" syn-events="['change', 'blur']">
let $sample = {
event: {
txtEmail_change(evt) {
syn.$l.eventLog('txtEmail_change', syn.uicontrols.$textbox.getValue('txtEmail'));
},
txtEmail_blur(evt) {
syn.$l.eventLog('txtEmail_blur', syn.uicontrols.$textbox.getValue('txtEmail'));
}
}
}

참고

  • 소스: TextBox.js, TextBox.css
  • 입력 마스크는 VMasker 라이브러리, 스피너는 ISpin 라이브러리를 사용합니다.
  • validators 옵션은 transactConfig를 통한 폼 전송 시 $validation.transactionValidate가 검사하며, TextBox 자체는 형식 변환/자체 blur 검증만 담당합니다.
  • 예제는 example 폴더, 사용 개요는 이 문서의 사용법 섹션를 참고하세요.