1e41f4b71Sopenharmony_ci# \<picker> Development 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciThe **\<picker>** component supports common, date, time, data and time, and multi-column text selectors. For details, see [picker](../reference/apis-arkui/arkui-js/js-components-basic-picker.md). 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci## Creating a \<picker> Component 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ciCreate a **\<picker>** component in the .hml file under **pages/index**. 9e41f4b71Sopenharmony_ci 10e41f4b71Sopenharmony_ci```html 11e41f4b71Sopenharmony_ci<!-- xxx.hml --> 12e41f4b71Sopenharmony_ci<div class="container"> 13e41f4b71Sopenharmony_ci <picker> picker </picker> 14e41f4b71Sopenharmony_ci</div> 15e41f4b71Sopenharmony_ci``` 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ci```css 18e41f4b71Sopenharmony_ci/* xxx.css */ 19e41f4b71Sopenharmony_ci.container { 20e41f4b71Sopenharmony_ci width: 100%; 21e41f4b71Sopenharmony_ci height: 100%; 22e41f4b71Sopenharmony_ci flex-direction: column; 23e41f4b71Sopenharmony_ci justify-content: center; 24e41f4b71Sopenharmony_ci align-items: center; 25e41f4b71Sopenharmony_ci background-color: #F1F3F5; 26e41f4b71Sopenharmony_ci} 27e41f4b71Sopenharmony_ci``` 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci## Setting the Picker Type 33e41f4b71Sopenharmony_ci 34e41f4b71Sopenharmony_ciSet the **type** attribute of the **\<picker>** component. For example, set it to **date**. 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci```html 37e41f4b71Sopenharmony_ci<!-- xxx.hml --> 38e41f4b71Sopenharmony_ci<div class="container"> 39e41f4b71Sopenharmony_ci <picker id="picker_text" type="text" value="{{textvalue}}"range="{{rangetext}}" class="pickertext" ></picker> 40e41f4b71Sopenharmony_ci <picker id="picker_date" type="date" value="{{datevalue}}" lunarswitch="true" start="2002-2-5" end="2030-6-5" class="pickerdate"></picker> 41e41f4b71Sopenharmony_ci</div> 42e41f4b71Sopenharmony_ci``` 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci```css 45e41f4b71Sopenharmony_ci/* xxx.css */ 46e41f4b71Sopenharmony_ci.container { 47e41f4b71Sopenharmony_ci width: 100%; 48e41f4b71Sopenharmony_ci height: 100%; 49e41f4b71Sopenharmony_ci flex-direction: column; 50e41f4b71Sopenharmony_ci justify-content: center; 51e41f4b71Sopenharmony_ci align-items: center; 52e41f4b71Sopenharmony_ci background-color: #F1F3F5; 53e41f4b71Sopenharmony_ci} 54e41f4b71Sopenharmony_ci.pickertext{ 55e41f4b71Sopenharmony_ci margin-bottom: 30px; 56e41f4b71Sopenharmony_ci} 57e41f4b71Sopenharmony_ci``` 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci```js 60e41f4b71Sopenharmony_ci// xxx.js 61e41f4b71Sopenharmony_ciexport default { 62e41f4b71Sopenharmony_ci data: { 63e41f4b71Sopenharmony_ci rangetext:['15', "20", "25"], 64e41f4b71Sopenharmony_ci textvalue:'Select text', 65e41f4b71Sopenharmony_ci datevalue:'Select date', 66e41f4b71Sopenharmony_ci } 67e41f4b71Sopenharmony_ci} 68e41f4b71Sopenharmony_ci``` 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci> **NOTE** 73e41f4b71Sopenharmony_ci> 74e41f4b71Sopenharmony_ci> When setting the value range of a common selector, you must use the data binding mode. 75e41f4b71Sopenharmony_ci 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci## Setting the Time Format 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ciSet the **hours** attribute to specify the time format used by the time picker. Available values include **12** and **24**, indicating the 12-hour format and 24-hour format, respectively. 80e41f4b71Sopenharmony_ci 81e41f4b71Sopenharmony_ci```html 82e41f4b71Sopenharmony_ci<!-- xxx.hml --> 83e41f4b71Sopenharmony_ci<div class="container"> 84e41f4b71Sopenharmony_ci <picker id="picker_time" type="time" value="12-hour format" hours="12" onchange="timeonchange" class="pickertime"></picker> 85e41f4b71Sopenharmony_ci <picker id="picker_time" type="time" value="24-hour format" hours="24" onchange="timeonchange" class="pickertime"></picker> 86e41f4b71Sopenharmony_ci</div> 87e41f4b71Sopenharmony_ci``` 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci```css 90e41f4b71Sopenharmony_ci/* xxx.css */ 91e41f4b71Sopenharmony_ci.container { 92e41f4b71Sopenharmony_ci width: 100%; 93e41f4b71Sopenharmony_ci height: 100%; 94e41f4b71Sopenharmony_ci flex-direction: column; 95e41f4b71Sopenharmony_ci justify-content: center; 96e41f4b71Sopenharmony_ci align-items: center; 97e41f4b71Sopenharmony_ci background-color: #F1F3F5; 98e41f4b71Sopenharmony_ci} 99e41f4b71Sopenharmony_ci.pickertime { 100e41f4b71Sopenharmony_ci margin-bottom:50px; 101e41f4b71Sopenharmony_ci width: 300px; 102e41f4b71Sopenharmony_ci height: 50px; 103e41f4b71Sopenharmony_ci} 104e41f4b71Sopenharmony_ci``` 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci> **NOTE** 109e41f4b71Sopenharmony_ci> - When **hours** is set to **12**, the time is displayed in 12-hour format and distinguished by a.m. and p.m. 110e41f4b71Sopenharmony_ci> 111e41f4b71Sopenharmony_ci> - When **hours** is set to **24**, the time is displayed in 24-hour format. 112e41f4b71Sopenharmony_ci 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci## Adding Response Events 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ciAdd the **change** event to confirm selection and the **cancel** event to cancel selection. 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci```html 119e41f4b71Sopenharmony_ci<!-- xxx.hml --> 120e41f4b71Sopenharmony_ci<div class="container"> 121e41f4b71Sopenharmony_ci <picker id="picker_multi" type="multi-text" value="{{multitextvalue}}" columns="3" range="{{multitext}}" selected=" 122e41f4b71Sopenharmony_ci {{multitextselect}}" onchange="multitextonchange" oncancel="multitextoncancel" class="pickermuitl"></picker> 123e41f4b71Sopenharmony_ci</div> 124e41f4b71Sopenharmony_ci``` 125e41f4b71Sopenharmony_ci 126e41f4b71Sopenharmony_ci```css 127e41f4b71Sopenharmony_ci/* xxx.css */ 128e41f4b71Sopenharmony_ci.container { 129e41f4b71Sopenharmony_ci width: 100%; 130e41f4b71Sopenharmony_ci height: 100%; 131e41f4b71Sopenharmony_ci flex-direction: column; 132e41f4b71Sopenharmony_ci justify-content: center; 133e41f4b71Sopenharmony_ci align-items: center; 134e41f4b71Sopenharmony_ci background-color: #F1F3F5; 135e41f4b71Sopenharmony_ci} 136e41f4b71Sopenharmony_ci.pickermuitl { 137e41f4b71Sopenharmony_ci margin-bottom:20px; 138e41f4b71Sopenharmony_ci width: 600px; 139e41f4b71Sopenharmony_ci height: 50px; 140e41f4b71Sopenharmony_ci font-size: 25px; 141e41f4b71Sopenharmony_ci letter-spacing:15px; 142e41f4b71Sopenharmony_ci} 143e41f4b71Sopenharmony_ci``` 144e41f4b71Sopenharmony_ci 145e41f4b71Sopenharmony_ci```js 146e41f4b71Sopenharmony_ci// xxx.js 147e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction'; 148e41f4b71Sopenharmony_ciexport default { 149e41f4b71Sopenharmony_ci data: { 150e41f4b71Sopenharmony_ci multitext:[["a", "b", "c"], ["e", "f", "g"], ["h", "i"]], 151e41f4b71Sopenharmony_ci multitextvalue:'Select multi-line text', 152e41f4b71Sopenharmony_ci multitextselect:[0,0,0], 153e41f4b71Sopenharmony_ci }, 154e41f4b71Sopenharmony_ci multitextonchange(e) { 155e41f4b71Sopenharmony_ci this.multitextvalue=e.newValue; 156e41f4b71Sopenharmony_ci promptAction.showToast({ message:"Multi-column text changed to:" + e.newValue }) 157e41f4b71Sopenharmony_ci }, 158e41f4b71Sopenharmony_ci multitextoncancel() { 159e41f4b71Sopenharmony_ci promptAction.showToast({ message:"multitextoncancel" }) 160e41f4b71Sopenharmony_ci }, 161e41f4b71Sopenharmony_ci} 162e41f4b71Sopenharmony_ci``` 163e41f4b71Sopenharmony_ci 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci 166e41f4b71Sopenharmony_ci 167e41f4b71Sopenharmony_ci## Example Scenario 168e41f4b71Sopenharmony_ci 169e41f4b71Sopenharmony_ci 170e41f4b71Sopenharmony_ciImplement a health check-in application by using the **\<picker>** component. 171e41f4b71Sopenharmony_ci 172e41f4b71Sopenharmony_ci 173e41f4b71Sopenharmony_ci```html 174e41f4b71Sopenharmony_ci<!-- xxx.hml --> 175e41f4b71Sopenharmony_ci<div class="doc-page"> 176e41f4b71Sopenharmony_ci <text class="title">Health check-in</text> 177e41f4b71Sopenharmony_ci <div class="out-container"> 178e41f4b71Sopenharmony_ci <text class="txt">Office:</text> 179e41f4b71Sopenharmony_ci <picker class="pick" focusable="true" type="text" value="{{pos}}" range="{{posarr}}" onchange="setPos"></picker> 180e41f4b71Sopenharmony_ci </div> 181e41f4b71Sopenharmony_ci <divider class="dvd"></divider> 182e41f4b71Sopenharmony_ci <div class="out-container"> 183e41f4b71Sopenharmony_ci <text class="txt">Office hours:</text> 184e41f4b71Sopenharmony_ci <picker class="pick" type="date" value="{{datevalue}}" start="2002-2-5" end="2030-6-5" selected="{{dateselect}}" 185e41f4b71Sopenharmony_ci lunarswitch="true" onchange="dateonchange"></picker> 186e41f4b71Sopenharmony_ci </div> 187e41f4b71Sopenharmony_ci <divider class="dvd"></divider> 188e41f4b71Sopenharmony_ci <div class="out-container"> 189e41f4b71Sopenharmony_ci <text class="txt">Having fever or cold symptoms</text> 190e41f4b71Sopenharmony_ci <picker class="pick" type="text" value="{{yorn1}}" range="{{yesno}}" selected="1" onchange="isFever"></picker> 191e41f4b71Sopenharmony_ci </div> 192e41f4b71Sopenharmony_ci <divider class="dvd"></divider> 193e41f4b71Sopenharmony_ci <div class="out-container"> 194e41f4b71Sopenharmony_ci <text class="txt">Close contact with someone with COVID-19</text> 195e41f4b71Sopenharmony_ci <picker class="pick" type="text" value="{{yorn2}}" range="{{yesno}}" selected="1" onchange="isTouch"></picker> 196e41f4b71Sopenharmony_ci </div> 197e41f4b71Sopenharmony_ci <div class="out-container"> 198e41f4b71Sopenharmony_ci <button value="Submit" style="margin-top:100px;width:50%;font-color:#0000ff;height:80px" onclick="showtoast"></button> 199e41f4b71Sopenharmony_ci </div> 200e41f4b71Sopenharmony_ci</div> 201e41f4b71Sopenharmony_ci``` 202e41f4b71Sopenharmony_ci 203e41f4b71Sopenharmony_ci 204e41f4b71Sopenharmony_ci```css 205e41f4b71Sopenharmony_ci/* xxx.css */ 206e41f4b71Sopenharmony_ci.doc-page { 207e41f4b71Sopenharmony_ci flex-direction: column; 208e41f4b71Sopenharmony_ci background-color: #F1F3F5; 209e41f4b71Sopenharmony_ci} 210e41f4b71Sopenharmony_ci.title { 211e41f4b71Sopenharmony_ci margin-top: 30px; 212e41f4b71Sopenharmony_ci margin-bottom: 30px; 213e41f4b71Sopenharmony_ci margin-left: 50px; 214e41f4b71Sopenharmony_ci font-weight: bold; 215e41f4b71Sopenharmony_ci color: #0000ff; 216e41f4b71Sopenharmony_ci font-size: 38px; 217e41f4b71Sopenharmony_ci} 218e41f4b71Sopenharmony_ci.out-container { 219e41f4b71Sopenharmony_ci flex-direction: column; 220e41f4b71Sopenharmony_ci align-items: center; 221e41f4b71Sopenharmony_ci} 222e41f4b71Sopenharmony_ci.pick { 223e41f4b71Sopenharmony_ci width: 80%; 224e41f4b71Sopenharmony_ci height: 76px; 225e41f4b71Sopenharmony_ci border: 1px solid #0000ff; 226e41f4b71Sopenharmony_ci border-radius: 20px; 227e41f4b71Sopenharmony_ci padding-left: 12px; 228e41f4b71Sopenharmony_ci} 229e41f4b71Sopenharmony_ci.txt { 230e41f4b71Sopenharmony_ci width: 80%; 231e41f4b71Sopenharmony_ci font-size: 18px; 232e41f4b71Sopenharmony_ci text-align: left; 233e41f4b71Sopenharmony_ci margin-bottom: 12px; 234e41f4b71Sopenharmony_ci margin-left: 12px; 235e41f4b71Sopenharmony_ci} 236e41f4b71Sopenharmony_ci.dvd { 237e41f4b71Sopenharmony_ci margin-top: 30px; 238e41f4b71Sopenharmony_ci margin-bottom: 30px; 239e41f4b71Sopenharmony_ci margin-left: 80px; 240e41f4b71Sopenharmony_ci margin-right: 80px; 241e41f4b71Sopenharmony_ci color: #6495ED; 242e41f4b71Sopenharmony_ci stroke-width: 6px; 243e41f4b71Sopenharmony_ci} 244e41f4b71Sopenharmony_ci``` 245e41f4b71Sopenharmony_ci 246e41f4b71Sopenharmony_ci 247e41f4b71Sopenharmony_ci```js 248e41f4b71Sopenharmony_ci// xxx.js 249e41f4b71Sopenharmony_ciimport promptAction from '@ohos.promptAction' 250e41f4b71Sopenharmony_ciexport default { 251e41f4b71Sopenharmony_ci data: { 252e41f4b71Sopenharmony_ci yorn1:'No', 253e41f4b71Sopenharmony_ci yorn2:'No', 254e41f4b71Sopenharmony_ci pos:'Home', 255e41f4b71Sopenharmony_ci yesno:['Yes', 'No'], 256e41f4b71Sopenharmony_ci posarr:['Home', 'Company'], 257e41f4b71Sopenharmony_ci datevalue:'Select time', 258e41f4b71Sopenharmony_ci datetimeselect:'2012-5-6-11-25', 259e41f4b71Sopenharmony_ci dateselect:'2021-9-17', 260e41f4b71Sopenharmony_ci showbuild:true 261e41f4b71Sopenharmony_ci }, 262e41f4b71Sopenharmony_ci onInit() { 263e41f4b71Sopenharmony_ci }, 264e41f4b71Sopenharmony_ci isFever(e) { 265e41f4b71Sopenharmony_ci this.yorn1 = e.newValue 266e41f4b71Sopenharmony_ci }, 267e41f4b71Sopenharmony_ci isTouch(e) { 268e41f4b71Sopenharmony_ci this.yorn2 = e.newValue 269e41f4b71Sopenharmony_ci }, 270e41f4b71Sopenharmony_ci setPos(e) { 271e41f4b71Sopenharmony_ci this.pos = e.newValue 272e41f4b71Sopenharmony_ci if (e.newValue === 'Non-research center') { 273e41f4b71Sopenharmony_ci this.showbuild = false 274e41f4b71Sopenharmony_ci } else { 275e41f4b71Sopenharmony_ci this.showbuild = true 276e41f4b71Sopenharmony_ci } 277e41f4b71Sopenharmony_ci }, 278e41f4b71Sopenharmony_ci setbuild(e) { 279e41f4b71Sopenharmony_ci this.build = e.newValue 280e41f4b71Sopenharmony_ci }, 281e41f4b71Sopenharmony_ci dateonchange(e) { 282e41f4b71Sopenharmony_ci e.month=e.month+1; 283e41f4b71Sopenharmony_ci this.datevalue = e.year + "-" + e.month + "-" + e.day; 284e41f4b71Sopenharmony_ci promptAction.showToast({ message:"date:"+e.year+"-"+e.month+"-"+e.day }) 285e41f4b71Sopenharmony_ci }, 286e41f4b71Sopenharmony_ci showtoast() { 287e41f4b71Sopenharmony_ci promptAction.showToast({ 288e41f4b71Sopenharmony_ci message: 'Submitted.', 289e41f4b71Sopenharmony_ci duration: 2000, 290e41f4b71Sopenharmony_ci gravity: 'center' 291e41f4b71Sopenharmony_ci }) 292e41f4b71Sopenharmony_ci } 293e41f4b71Sopenharmony_ci} 294e41f4b71Sopenharmony_ci``` 295e41f4b71Sopenharmony_ci 296e41f4b71Sopenharmony_ci 297e41f4b71Sopenharmony_ci 298