ExtJS 기초강좌 13 - 폼필드(FormField)의 다양한 컴포넌트 알아보기
ExtJS에서 제공하는 다양한 폼종류에 대해서 간단하게 알아보도록 하겠습니다.
보통 html 태그를 예를 들면 다음과 같은 태그들이 존재할 수 있겠습니다.
text : <input type="text" /><br/>
password : <input type="password" /><br/>
file : <input type="file" /><br/>
textarea : <textarea rows="10" cols="50"></textarea><br/>
checkbox : <input type="checkbox" value="1" /><br/>
radio : <input type="radio" name="rdo" value="1" />
<input type="radio" name="rdo" value="2" /><br/>
<h1>ADD HTML5 TAG ▼</h1>
color : <input type="color" /><br/>
date(day) : <input type="date" /><br/>
date(month) : <input type="month" /><br/>
tiem : <input type="time" /><br/>
week : <input type="week" /><br/>
신규 추가된 HTML5의 태그들을 제외한다면
text/file/textarea/checkbox/radio
이 정도 태그 밖에 존재하지 않는 것입니다.
그럼 ExtJS에서 제공하는 폼필드들을 한번 코드 작성 후,
결과를 확인 해보겠습니다.
▶ 샘플코드
Ext.onReady(function(){
Ext.create('Ext.Panel',{
title : 'Default Form Field',
items : [{
xtype : 'textfield',
width : 700,
fieldLabel : 'text'
},{
xtype : 'textfield',
inputType : 'password',
width : 700,
fieldLabel : 'password'
},{
xtype : 'filefield',
width : 700,
fieldLabel : 'file'
},{
xtype : 'filebutton',
text : 'upload button'
},{
xtype : 'numberfield',
width : 700,
fieldLabel : 'number'
},{
xtype : 'datefield',
width : 700,
fieldLabel : 'date',
maxValue: new Date()
},{
xtype : 'timefield',
width : 700,
fieldLabel : 'time'
},{
xtype : 'textarea',
width : 700,
fieldLabel : 'textarea'
},{
xtype : 'checkbox',
fieldLabel : 'checkbox',
value : 'yes'
},
{
xtype : 'panel',
layout : 'hbox',
items : [{
xtype: 'radiofield',
name: 'radio1',
value: 'M',
boxLabel: 'Man',
fieldLabel : 'Sex'
}, {
xtype: 'radiofield',
name: 'radio1',
value: 'W',
boxLabel: 'Woman'
}]
},
{
xtype : 'panel',
layout : 'fit',
title : 'editor',
items : [
{
xtype : 'htmleditor'
}
]
},
{
xtype : 'panel',
layout : 'fit',
title : 'datepicker',
layout : 'hbox',
items : [
{
xtype : 'datepicker'
},{
xtype : 'monthpicker'
}
]
}],
renderTo : Ext.getBody()
})
})
▶ 실행결과
다양한 폼필드를 출력해보았습니다.
코드가 조금 길어져서 복잡해보일수도 있겟지만,
코드에 작성한 폼필드의 xtype만 보시면 되겠습니다.(panel 제외)
▶적용 폼필드
① textfield
② filefield
③ filebutton
④ numberfield
⑤ datefield
⑥ timefield
⑦ textarea or textareafield
⑧ checkbox
⑨ radiofield
⑩ htmleditor
⑪ datepicker
⑫ monthpicker
패스워드의 경우 별도의 xtype이 존재하는 것이 아니고, textfield 타입에서 inputType config 속성을 password로 지정해줘서 출력이 되는것입니다.
그리고 비록 상용에디터정도의 기능은 아니여도 기본으로 글꾸미기 정도 가능한 HTML에디터도 지원을 해주고 있군요.
그 외에 슬라이더/컬러피커 등.. 기타 유용한 폼필드도 존자하나, 기본으로 제공해주는 것이 아니고 ExtJS에서 제공하는 플러그인 형태의 클래스를 적용해서 사용이 가능합니다.
제공되는 기타 클래스들은 화려한 컴포넌트 및 기능들이 다양합니다.
관련 내용은 이후에 다뤄보도록 하겠습니다.
현재 장에서는 일반 패널내에 폼필드를 출력했습니다.
추후 데이터 전송을 할 경우에는 일반 패널이 아닌 폼패널을 이용하여 입력값들을 서버에 전송하는 내용을 다뤄보도록 할 예정입니다.
그리고 이번장에서는 다뤄보지 않은 폼이 하나 있습니다.
바로 'SELECTBOX'와 동일한 콤보박스가 존재하는데 이 컴포넌트는 Store라는 데이터저장소에 대한 개념을 이해하셔야 하기 때문에 데이터스토어 관련 강좌를 진행할 때 다루도록 하겠습니다.
폼필드로 로그인/회원가입/글쓰기 등의 컴포넌트 제작을 하시면 되겠습니다.