1e41f4b71Sopenharmony_ci# <input> Development
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ciThe **<input>** component provides an interactive way to receive user input of various types, including **date**, **checkbox**, and **button**. For details, see [input](../reference/apis-arkui/arkui-js/js-components-basic-input.md).
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci
7e41f4b71Sopenharmony_ci## Creating an <input> Component
8e41f4b71Sopenharmony_ci
9e41f4b71Sopenharmony_ciCreate an **<input>** component in the .hml file under **pages/index**.
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci```html
12e41f4b71Sopenharmony_ci<!-- xxx.hml -->
13e41f4b71Sopenharmony_ci<div class="container">       
14e41f4b71Sopenharmony_ci  <input type="text">             
15e41f4b71Sopenharmony_ci     Please enter the content  
16e41f4b71Sopenharmony_ci  </input>
17e41f4b71Sopenharmony_ci</div>
18e41f4b71Sopenharmony_ci```
19e41f4b71Sopenharmony_ci
20e41f4b71Sopenharmony_ci```css
21e41f4b71Sopenharmony_ci/* xxx.css */
22e41f4b71Sopenharmony_ci.container {
23e41f4b71Sopenharmony_ci  width: 100%;
24e41f4b71Sopenharmony_ci  height: 100%;
25e41f4b71Sopenharmony_ci  flex-direction: column;
26e41f4b71Sopenharmony_ci  justify-content: center;
27e41f4b71Sopenharmony_ci  align-items: center;
28e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
29e41f4b71Sopenharmony_ci}
30e41f4b71Sopenharmony_ci```
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci![en-us_image_0000001222807768](figures/en-us_image_0000001222807768.png)
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci## Setting the Input Type
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ciSet the **type** attribute of the **&lt;input&gt;** component to **button**, **date**, or any of the supported values.
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci```html
40e41f4b71Sopenharmony_ci<!-- xxx.hml -->
41e41f4b71Sopenharmony_ci<div class="container">
42e41f4b71Sopenharmony_ci  <div class="div-button">
43e41f4b71Sopenharmony_ci    <dialog class="dialogClass" id="dialogId">
44e41f4b71Sopenharmony_ci      <div class="content">
45e41f4b71Sopenharmony_ci        <text>this is a dialog</text>
46e41f4b71Sopenharmony_ci      </div>
47e41f4b71Sopenharmony_ci    </dialog>
48e41f4b71Sopenharmony_ci    <input class="button" type="button" value="click" onclick="btnclick"></input>
49e41f4b71Sopenharmony_ci  </div>
50e41f4b71Sopenharmony_ci  <div class="content">
51e41f4b71Sopenharmony_ci    <input onchange="checkboxOnChange" checked="true" type="checkbox"></input>
52e41f4b71Sopenharmony_ci  </div>
53e41f4b71Sopenharmony_ci  <div class="content">
54e41f4b71Sopenharmony_ci    <input type="date" class="flex" placeholder="Enter data"></input>
55e41f4b71Sopenharmony_ci  </div>
56e41f4b71Sopenharmony_ci</div>
57e41f4b71Sopenharmony_ci```
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci```css
60e41f4b71Sopenharmony_ci/* xxx.css */
61e41f4b71Sopenharmony_ci.container {
62e41f4b71Sopenharmony_ci  width: 100%;
63e41f4b71Sopenharmony_ci  height: 100%;
64e41f4b71Sopenharmony_ci  align-items: center;
65e41f4b71Sopenharmony_ci  flex-direction: column;
66e41f4b71Sopenharmony_ci  justify-content: center;
67e41f4b71Sopenharmony_ci  background-color: #F1F3F5 ;
68e41f4b71Sopenharmony_ci}
69e41f4b71Sopenharmony_ci.div-button {
70e41f4b71Sopenharmony_ci  flex-direction: column;
71e41f4b71Sopenharmony_ci  align-items: center;
72e41f4b71Sopenharmony_ci}
73e41f4b71Sopenharmony_ci.dialogClass{
74e41f4b71Sopenharmony_ci  width:80%;
75e41f4b71Sopenharmony_ci  height: 200px;
76e41f4b71Sopenharmony_ci}
77e41f4b71Sopenharmony_ci.button {
78e41f4b71Sopenharmony_ci  margin-top: 30px;
79e41f4b71Sopenharmony_ci  width: 50%;
80e41f4b71Sopenharmony_ci}
81e41f4b71Sopenharmony_ci.content{
82e41f4b71Sopenharmony_ci  width: 90%;
83e41f4b71Sopenharmony_ci  height: 150px;
84e41f4b71Sopenharmony_ci  align-items: center;
85e41f4b71Sopenharmony_ci  justify-content: center;
86e41f4b71Sopenharmony_ci}
87e41f4b71Sopenharmony_ci.flex {
88e41f4b71Sopenharmony_ci  width: 80%;
89e41f4b71Sopenharmony_ci  margin-bottom:40px;
90e41f4b71Sopenharmony_ci}
91e41f4b71Sopenharmony_ci```
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci```js
94e41f4b71Sopenharmony_ci// xxx.js
95e41f4b71Sopenharmony_ciexport default {
96e41f4b71Sopenharmony_ci  btnclick(){
97e41f4b71Sopenharmony_ci    this.$element('dialogId').show()
98e41f4b71Sopenharmony_ci  },
99e41f4b71Sopenharmony_ci}
100e41f4b71Sopenharmony_ci```
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci![en-us_image_0000001223287672](figures/en-us_image_0000001223287672.gif)
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci> **NOTE**
107e41f4b71Sopenharmony_ci> - For wearables, the input type can only be **button**, **radio**, or **checkbox**.
108e41f4b71Sopenharmony_ci>
109e41f4b71Sopenharmony_ci> - The settings of **checked** take effect only when the input type is set to **checkbox** or **radio**. The default value of **checked** is **false**.
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci## Event Binding
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci  Add the **search** and **translate** events to the **&lt;input&gt;** component.
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci```html
117e41f4b71Sopenharmony_ci<!-- xxx.hml -->
118e41f4b71Sopenharmony_ci<div class="content">
119e41f4b71Sopenharmony_ci  <text style="margin-left: -7px;">
120e41f4b71Sopenharmony_ci    <span>Enter text and then touch and hold what you've entered</span>
121e41f4b71Sopenharmony_ci  </text>
122e41f4b71Sopenharmony_ci  <input class="input" type="text" onsearch="search" placeholder="search"> </input>
123e41f4b71Sopenharmony_ci  <input class="input" type="text" ontranslate="translate" placeholder="translate"> </input>
124e41f4b71Sopenharmony_ci</div>
125e41f4b71Sopenharmony_ci```
126e41f4b71Sopenharmony_ci
127e41f4b71Sopenharmony_ci```css
128e41f4b71Sopenharmony_ci/* xxx.css */
129e41f4b71Sopenharmony_ci.content {
130e41f4b71Sopenharmony_ci  width: 100%;
131e41f4b71Sopenharmony_ci  height: 100%;
132e41f4b71Sopenharmony_ci  flex-direction: column;
133e41f4b71Sopenharmony_ci  align-items: center;
134e41f4b71Sopenharmony_ci  justify-content: center;
135e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
136e41f4b71Sopenharmony_ci}
137e41f4b71Sopenharmony_ci.input {
138e41f4b71Sopenharmony_ci  margin-top: 50px;
139e41f4b71Sopenharmony_ci  width: 60%;
140e41f4b71Sopenharmony_ci  placeholder-color: gray;
141e41f4b71Sopenharmony_ci}
142e41f4b71Sopenharmony_citext{
143e41f4b71Sopenharmony_ci  width:100%;
144e41f4b71Sopenharmony_ci  font-size:25px;
145e41f4b71Sopenharmony_ci  text-align:center;
146e41f4b71Sopenharmony_ci}
147e41f4b71Sopenharmony_ci```
148e41f4b71Sopenharmony_ci
149e41f4b71Sopenharmony_ci```js
150e41f4b71Sopenharmony_ci// xxx.js
151e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction'
152e41f4b71Sopenharmony_ciexport default {
153e41f4b71Sopenharmony_ci  search(e){
154e41f4b71Sopenharmony_ci    promptAction.showToast({
155e41f4b71Sopenharmony_ci      message:  e.value,
156e41f4b71Sopenharmony_ci      duration: 3000,
157e41f4b71Sopenharmony_ci    });
158e41f4b71Sopenharmony_ci  },
159e41f4b71Sopenharmony_ci  translate(e){
160e41f4b71Sopenharmony_ci    promptAction.showToast({
161e41f4b71Sopenharmony_ci      message:  e.value,
162e41f4b71Sopenharmony_ci      duration: 3000,
163e41f4b71Sopenharmony_ci    });
164e41f4b71Sopenharmony_ci  }
165e41f4b71Sopenharmony_ci}
166e41f4b71Sopenharmony_ci```
167e41f4b71Sopenharmony_ci
168e41f4b71Sopenharmony_ci![en-us_image_0000001267647853](figures/en-us_image_0000001267647853.gif)
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci## Setting the Input Error Message
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ciAdd the **showError** method to the **&lt;input&gt;** component to display an error message in the event of incorrect input.
174e41f4b71Sopenharmony_ci
175e41f4b71Sopenharmony_ci```html
176e41f4b71Sopenharmony_ci<!-- xxx.hml -->
177e41f4b71Sopenharmony_ci<div class="content">
178e41f4b71Sopenharmony_ci  <input id="input" class="input" type="text"  maxlength="20" placeholder="Please input text" onchange="change">
179e41f4b71Sopenharmony_ci  </input>
180e41f4b71Sopenharmony_ci  <input class="button" type="button" value="Submit" onclick="buttonClick"></input>
181e41f4b71Sopenharmony_ci</div>
182e41f4b71Sopenharmony_ci```
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci```css
185e41f4b71Sopenharmony_ci/* xxx.css */
186e41f4b71Sopenharmony_ci.content {
187e41f4b71Sopenharmony_ci  width: 100%;
188e41f4b71Sopenharmony_ci  height: 100%;
189e41f4b71Sopenharmony_ci  flex-direction: column;
190e41f4b71Sopenharmony_ci  align-items: center;
191e41f4b71Sopenharmony_ci  justify-content: center;
192e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
193e41f4b71Sopenharmony_ci}
194e41f4b71Sopenharmony_ci.input {
195e41f4b71Sopenharmony_ci  width: 80%;
196e41f4b71Sopenharmony_ci  placeholder-color: gray;
197e41f4b71Sopenharmony_ci}
198e41f4b71Sopenharmony_ci.button {
199e41f4b71Sopenharmony_ci  width: 30%;
200e41f4b71Sopenharmony_ci  margin-top: 50px;
201e41f4b71Sopenharmony_ci}
202e41f4b71Sopenharmony_ci```
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci```js
205e41f4b71Sopenharmony_ci// xxx.js
206e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction' 
207e41f4b71Sopenharmony_ci export default { 
208e41f4b71Sopenharmony_ci   data:{ 
209e41f4b71Sopenharmony_ci     value:'', 
210e41f4b71Sopenharmony_ci   }, 
211e41f4b71Sopenharmony_ci   change(e){ 
212e41f4b71Sopenharmony_ci     this.value = e.value; 
213e41f4b71Sopenharmony_ci     promptAction.showToast({ 
214e41f4b71Sopenharmony_ci     message: "value: " + this.value, 
215e41f4b71Sopenharmony_ci       duration: 3000, 
216e41f4b71Sopenharmony_ci      }); 
217e41f4b71Sopenharmony_ci   }, 
218e41f4b71Sopenharmony_ci   buttonClick(e){ 
219e41f4b71Sopenharmony_ci     if(this.value.length > 6){ 
220e41f4b71Sopenharmony_ci       this.$element("input").showError({        
221e41f4b71Sopenharmony_ci         error:  'Up to 6 characters are allowed.'       
222e41f4b71Sopenharmony_ci       }); 
223e41f4b71Sopenharmony_ci      }else if(this.value.length == 0){ 
224e41f4b71Sopenharmony_ci        this.$element("input").showError({         
225e41f4b71Sopenharmony_ci          error:this.value + 'This field cannot be left empty.'       
226e41f4b71Sopenharmony_ci        }); 
227e41f4b71Sopenharmony_ci      }else{ 
228e41f4b71Sopenharmony_ci        promptAction.showToast({ 
229e41f4b71Sopenharmony_ci          message: "success " 
230e41f4b71Sopenharmony_ci        }); 
231e41f4b71Sopenharmony_ci      } 
232e41f4b71Sopenharmony_ci   }, 
233e41f4b71Sopenharmony_ci }
234e41f4b71Sopenharmony_ci```
235e41f4b71Sopenharmony_ci
236e41f4b71Sopenharmony_ci![en-us_image_0000001223127708](figures/en-us_image_0000001223127708.gif)
237e41f4b71Sopenharmony_ci
238e41f4b71Sopenharmony_ci> **NOTE**
239e41f4b71Sopenharmony_ci>
240e41f4b71Sopenharmony_ci> This method is available when the input type is set to **text**, **email**, **date**, **time**, **number**, or **password**.
241e41f4b71Sopenharmony_ci
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ci## Example Scenario
244e41f4b71Sopenharmony_ci
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ciEnter information by using the **&lt;input&gt;** component of the type that suits your needs.
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci
249e41f4b71Sopenharmony_ci```html
250e41f4b71Sopenharmony_ci<!-- xxx.hml -->
251e41f4b71Sopenharmony_ci<div class="container">    
252e41f4b71Sopenharmony_ci  <div class="label-item"> 
253e41f4b71Sopenharmony_ci    <label>memorandum</label>   
254e41f4b71Sopenharmony_ci  </div>    
255e41f4b71Sopenharmony_ci  <div class="label-item">        
256e41f4b71Sopenharmony_ci    <label class="lab" target="input1">content:</label>        
257e41f4b71Sopenharmony_ci    <input class="flex" id="input1" placeholder="Enter content" />    
258e41f4b71Sopenharmony_ci  </div>    
259e41f4b71Sopenharmony_ci  <div class="label-item">        
260e41f4b71Sopenharmony_ci    <label class="lab" target="input3">date:</label>        
261e41f4b71Sopenharmony_ci    <input class="flex" id="input3" type="date" placeholder="Enter data" />    
262e41f4b71Sopenharmony_ci  </div>    
263e41f4b71Sopenharmony_ci  <div class="label-item">        
264e41f4b71Sopenharmony_ci    <label class="lab" target="input4">time:</label>        
265e41f4b71Sopenharmony_ci    <input class="flex" id="input4" type="time" placeholder="Enter time" />    
266e41f4b71Sopenharmony_ci  </div>   
267e41f4b71Sopenharmony_ci  <div class="label-item">        
268e41f4b71Sopenharmony_ci    <label class="lab" target="checkbox1">Complete:</label>        
269e41f4b71Sopenharmony_ci    <input class="flex" type="checkbox" id="checkbox1" style="width: 100px;height: 100px;" />    
270e41f4b71Sopenharmony_ci  </div>    
271e41f4b71Sopenharmony_ci  <div class="label-item">        
272e41f4b71Sopenharmony_ci    <input class="flex" type="button" id="button" value="save" onclick="btnclick"/>    
273e41f4b71Sopenharmony_ci  </div>
274e41f4b71Sopenharmony_ci</div>
275e41f4b71Sopenharmony_ci```
276e41f4b71Sopenharmony_ci
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ci```css
279e41f4b71Sopenharmony_ci/* xxx.css */
280e41f4b71Sopenharmony_ci.container { 
281e41f4b71Sopenharmony_ci  flex-direction: column;
282e41f4b71Sopenharmony_ci  background-color: #F1F3F5;
283e41f4b71Sopenharmony_ci}
284e41f4b71Sopenharmony_ci.label-item {   
285e41f4b71Sopenharmony_ci  align-items: center;
286e41f4b71Sopenharmony_ci  border-bottom-width: 1px;border-color: #dddddd;
287e41f4b71Sopenharmony_ci}
288e41f4b71Sopenharmony_ci.lab {    
289e41f4b71Sopenharmony_ci  width: 400px;}
290e41f4b71Sopenharmony_cilabel {    
291e41f4b71Sopenharmony_ci  padding: 30px;
292e41f4b71Sopenharmony_ci  font-size: 30px;      
293e41f4b71Sopenharmony_ci  width: 320px;
294e41f4b71Sopenharmony_ci  font-family: serif;
295e41f4b71Sopenharmony_ci  color: #9370d8;
296e41f4b71Sopenharmony_ci  font-weight: bold;
297e41f4b71Sopenharmony_ci}
298e41f4b71Sopenharmony_ci.flex {    
299e41f4b71Sopenharmony_ci  flex: 1;
300e41f4b71Sopenharmony_ci}
301e41f4b71Sopenharmony_ci.textareaPadding {    
302e41f4b71Sopenharmony_ci  padding-left: 100px;
303e41f4b71Sopenharmony_ci}
304e41f4b71Sopenharmony_ci```
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ci
307e41f4b71Sopenharmony_ci```js
308e41f4b71Sopenharmony_ci// xxx.js
309e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction';
310e41f4b71Sopenharmony_ciexport default {    
311e41f4b71Sopenharmony_ci  data: {    
312e41f4b71Sopenharmony_ci  },    
313e41f4b71Sopenharmony_ci  onInit() { 
314e41f4b71Sopenharmony_ci  },   
315e41f4b71Sopenharmony_ci  btnclick(e) {        
316e41f4b71Sopenharmony_ci    promptAction.showToast({            
317e41f4b71Sopenharmony_ci      message:'Saved successfully!'        
318e41f4b71Sopenharmony_ci    })    
319e41f4b71Sopenharmony_ci  }
320e41f4b71Sopenharmony_ci}     
321e41f4b71Sopenharmony_ci```
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ci
324e41f4b71Sopenharmony_ci![en-us_image_0000001222807760](figures/en-us_image_0000001222807760.gif)
325