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 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci## Setting the Input Type 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ciSet the **type** attribute of the **<input>** 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 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 **<input>** 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 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ci 171e41f4b71Sopenharmony_ci## Setting the Input Error Message 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ciAdd the **showError** method to the **<input>** 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 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 **<input>** 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 325