input.uvue 13.5 KB
Newer Older
Y
init  
yurj26 已提交
1
<template>
张磊 已提交
2 3 4 5 6 7 8 9 10
  <!-- #ifdef APP -->
  <scroll-view style="flex: 1">
  <!-- #endif -->
    <page-head :title="title"></page-head>
    <view class="uni-common-mt uni-padding-wrap">
      <view>
        <view class="uni-title">
          <text class="uni-title-text">设置输入框的初始内容</text>
        </view>
雪洛's avatar
雪洛 已提交
11
        <view class="input-wrapper">
12
          <input id="uni-input-default" class="uni-input" value="hello uni-app x" />
张磊 已提交
13 14
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
15

张磊 已提交
16 17 18 19
      <view>
        <view class="uni-title">
          <text class="uni-title-text">type取值(不同输入法表现可能不一致)</text>
        </view>
雪洛's avatar
雪洛 已提交
20
        <view class="input-wrapper">
21
          <input id="uni-input-type-text" class="uni-input" type="text" placeholder="文本输入键盘" />
张磊 已提交
22
        </view>
雪洛's avatar
雪洛 已提交
23
        <view class="input-wrapper">
24
          <input id="uni-input-type-number" class="uni-input" type="number" placeholder="数字输入键盘" />
张磊 已提交
25
        </view>
雪洛's avatar
雪洛 已提交
26
        <view class="input-wrapper">
27
          <input id="uni-input-type-digit" class="uni-input" type="digit" placeholder="带小数点的数字输入键盘" />
张磊 已提交
28
        </view>
雪洛's avatar
雪洛 已提交
29
        <view class="input-wrapper">
30
          <input id="uni-input-type-tel" class="uni-input" :type="inputTypeTel" placeholder="电话输入键盘" />
张磊 已提交
31 32
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
33

张磊 已提交
34 35 36 37
      <view>
        <view class="uni-title">
          <text class="uni-title-text">密码输入框</text>
        </view>
雪洛's avatar
雪洛 已提交
38
        <view class="input-wrapper">
39
          <input id="uni-input-password" class="uni-input" :password="inputPassword" :value="inputPasswordValue" />
张磊 已提交
40 41
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
42

张磊 已提交
43 44 45 46
      <view>
        <view class="uni-title">
          <text class="uni-title-text">占位符样式</text>
        </view>
雪洛's avatar
雪洛 已提交
47
        <view class="input-wrapper">
H
hdx 已提交
48 49
          <input id="uni-input-placeholder1" class="uni-input" :placeholder-style="inputPlaceHolderStyle"
            placeholder="占位符文字颜色为红色" />
张磊 已提交
50
        </view>
雪洛's avatar
雪洛 已提交
51
        <view class="input-wrapper">
H
hdx 已提交
52 53
          <input id="uni-input-placeholder2" class="uni-input" :placeholder-class="inputPlaceHolderClass"
            placeholder="占位符字体大小为10px" />
张磊 已提交
54 55
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
56

张磊 已提交
57 58 59 60
      <view>
        <view class="uni-title">
          <text class="uni-title-text">设置禁用输入框</text>
        </view>
雪洛's avatar
雪洛 已提交
61
        <view class="input-wrapper">
62
          <input id="uni-input-disable" class="uni-input" :disabled="true" />
张磊 已提交
63 64
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
65

张磊 已提交
66 67 68 69
      <view>
        <view class="uni-title">
          <text class="uni-title-text">设置最大输入长度</text>
        </view>
雪洛's avatar
雪洛 已提交
70
        <view class="input-wrapper">
H
hdx 已提交
71 72
          <input id="uni-input-maxlength" class="uni-input" :maxlength="10" placeholder="最大输入长度为10"
            :value="inputMaxLengthValue" @input="onMaxLengthInput" :focus="inputMaxLengthFocus" />
张磊 已提交
73 74
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
75

张磊 已提交
76 77 78 79
      <view>
        <view class="uni-title">
          <text class="uni-title-text">设置光标与键盘的距离</text>
        </view>
雪洛's avatar
雪洛 已提交
80
        <view class="input-wrapper">
张磊 已提交
81 82
          <input class="uni-input" :cursor-spacing="1000" placeholder="光标与键盘的距离为1000px" />
        </view>
雪洛's avatar
雪洛 已提交
83 84
      </view>

张磊 已提交
85 86 87 88
      <view>
        <view class="uni-title">
          <text class="uni-title-text">自动获取焦点</text>
        </view>
雪洛's avatar
雪洛 已提交
89
        <view class="input-wrapper">
H
hdx 已提交
90 91
          <input id="uni-input-focus" class="uni-input" :focus="focus"
            @keyboardheightchange="inputFocusKeyBoardChange" />
张磊 已提交
92 93
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
94

张磊 已提交
95 96 97 98
      <view>
        <view class="uni-title">
          <text class="uni-title-text">confirm-type取值(不同输入法表现可能不一致)</text>
        </view>
雪洛's avatar
雪洛 已提交
99
        <view class="input-wrapper">
100
          <input id="uni-input-confirm-send" class="uni-input" confirmType="send" placeholder="键盘右下角按钮显示为发送" />
张磊 已提交
101
        </view>
雪洛's avatar
雪洛 已提交
102
        <view class="input-wrapper">
103
          <input id="uni-input-confirm-search" class="uni-input" confirmType="search" placeholder="键盘右下角按钮显示为搜索" />
张磊 已提交
104
        </view>
雪洛's avatar
雪洛 已提交
105
        <view class="input-wrapper">
106
          <input id="uni-input-confirm-next" class="uni-input" confirmType="next" placeholder="键盘右下角按钮显示为下一个" />
张磊 已提交
107
        </view>
雪洛's avatar
雪洛 已提交
108
        <view class="input-wrapper">
109
          <input id="uni-input-confirm-go" class="uni-input" confirmType="go" placeholder="键盘右下角按钮显示为前往" />
张磊 已提交
110
        </view>
雪洛's avatar
雪洛 已提交
111
        <view class="input-wrapper">
112
          <input id="uni-input-confirm-done" class="uni-input" confirmType="done" placeholder="键盘右下角按钮显示为完成" />
张磊 已提交
113 114
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
115

张磊 已提交
116 117 118 119
      <view>
        <view class="uni-title">
          <text class="uni-title-text">点击键盘右下角按钮时保持键盘不收起</text>
        </view>
雪洛's avatar
雪洛 已提交
120
        <view class="input-wrapper">
张磊 已提交
121 122 123
          <input class="uni-input" :confirm-hold="true" />
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
124

张磊 已提交
125 126 127 128
      <view>
        <view class="uni-title" @click="setCursor(4)">
          <text class="uni-title-text">设置输入框聚焦时光标的位置(点击生效)</text>
        </view>
雪洛's avatar
雪洛 已提交
129
        <view class="input-wrapper">
张磊 已提交
130 131 132
          <input ref="input" class="uni-input" value="0123456789" :cursor="cursor" />
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
133

张磊 已提交
134 135 136 137
      <view>
        <view class="uni-title" @click="setSelection(0, 4)">
          <text class="uni-title-text">设置输入框聚焦时光标的起始位置和结束位置(点击生效)</text>
        </view>
雪洛's avatar
雪洛 已提交
138
        <view class="input-wrapper">
H
hdx 已提交
139 140
          <input ref="input2" class="uni-input" value="0123456789" :selection-start="selectionStart"
            :selection-end="selectionEnd" />
张磊 已提交
141
        </view>
雪洛's avatar
雪洛 已提交
142 143 144
      </view>

      <view>
145
        <view class="uni-title" style="flex-direction: row;align-items: center;">
H
hdx 已提交
146
          <text class="uni-title-text">设置光标颜色为红色</text>
147
          <switch style="margin-left: 10px;" @change="changeCursorColor" :checked="cursor_color=='red'"></switch>
雪洛's avatar
雪洛 已提交
148 149 150 151
        </view>
        <view class="input-wrapper">
          <input id="uni-input-cursor-color" class="uni-input" :cursor-color="cursor_color" value="光标颜色" />
        </view>
张磊 已提交
152
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
153

张磊 已提交
154 155 156 157
      <view>
        <view class="uni-title">
          <text class="uni-title-text">键盘弹起时,自动上推页面</text>
        </view>
雪洛's avatar
雪洛 已提交
158
        <view class="input-wrapper">
张磊 已提交
159 160
          <input class="uni-input" :adjust-position="true" />
        </view>
H
hdx 已提交
161 162 163 164 165 166 167 168 169 170 171 172
      </view>


      <view>
        <view class="uni-title" style="flex-direction: row;align-items: center;">
          <text class="uni-title-text">设置hold-keyboard</text>
          <switch style="margin-left: 10px;" @change="changeHoldKeyboard" :checked="holdKeyboard"></switch>
        </view>
        <view class="input-wrapper">
          <input class="uni-input" :hold-keyboard="holdKeyboard" value="hold-keyboard" />
        </view>
      </view>
173

DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
174

张磊 已提交
175 176 177 178 179
      <view>
        <view class="uni-title">
          <text class="uni-title-text">input事件</text>
          <text class="uni-subtitle-text" v-if="inputEventDetail">{{inputEventDetail}}</text>
        </view>
雪洛's avatar
雪洛 已提交
180
        <view class="input-wrapper">
张磊 已提交
181 182 183
          <input class="uni-input" @input="onInput" />
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
184

张磊 已提交
185 186 187 188 189
      <view>
        <view class="uni-title">
          <text class="uni-title-text">focus事件和blur事件</text>
          <text class="uni-subtitle-text" v-if="focusAndBlurEventDetail">{{focusAndBlurEventDetail}}</text>
        </view>
雪洛's avatar
雪洛 已提交
190
        <view class="input-wrapper">
张磊 已提交
191 192 193
          <input class="uni-input" @focus="onFocus" @blur="onBlur" />
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
194

张磊 已提交
195 196 197 198 199
      <view>
        <view class="uni-title">
          <text class="uni-title-text">confirm事件</text>
          <text class="uni-subtitle-text" v-if="confirmEventDetail">{{confirmEventDetail}}</text>
        </view>
雪洛's avatar
雪洛 已提交
200
        <view class="input-wrapper">
张磊 已提交
201 202 203
          <input class="uni-input" @confirm="onConfirm" />
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
204

张磊 已提交
205 206 207
      <view>
        <view class="uni-title">
          <text class="uni-title-text">keyboardheightchange事件</text>
H
hdx 已提交
208 209
          <text class="uni-subtitle-text"
            v-if="keyboardHeightChangeEventDetail">{{keyboardHeightChangeEventDetail}}</text>
张磊 已提交
210
        </view>
雪洛's avatar
雪洛 已提交
211
        <view class="input-wrapper">
张磊 已提交
212 213 214
          <input class="uni-input" @keyboardheightchange="onKeyborardHeightChange" />
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
215

张磊 已提交
216 217 218 219
      <view>
        <view class="uni-title">
          <text class="uni-title-text">带清除按钮的输入框</text>
        </view>
雪洛's avatar
雪洛 已提交
220
        <view class="input-wrapper">
张磊 已提交
221 222 223 224 225
          <input class="uni-input" placeholder="带清除按钮的输入框" :value="inputClearValue" @input="clearInput" />
          <image class="uni-icon" src="/static/icons/clear.png" v-if="showClearIcon" @click="clearIcon">
          </image>
        </view>
      </view>
DCloud-yinjiacheng's avatar
DCloud-yinjiacheng 已提交
226

张磊 已提交
227 228 229 230
      <view>
        <view class="uni-title">
          <text class="uni-title-text">可查看密码的输入框</text>
        </view>
雪洛's avatar
雪洛 已提交
231
        <view class="input-wrapper">
张磊 已提交
232
          <input class="uni-input" placeholder="请输入密码" :password="showPassword" />
H
hdx 已提交
233 234
          <image class="uni-icon" :src="!showPassword ? '/static/icons/eye-active.png' : '/static/icons/eye.png'"
            @click="changePassword"></image>
张磊 已提交
235 236 237 238 239 240
        </view>
      </view>
    </view>
  <!-- #ifdef APP -->
  </scroll-view>
  <!-- #endif -->
Y
init  
yurj26 已提交
241
</template>
Y
yurj26 已提交
242
<script lang="uts">
张磊 已提交
243 244 245 246 247 248 249
  export default {
    data() {
      return {
        title: 'input',
        showClearIcon: false,
        inputClearValue: '',
        showPassword: true,
雪洛's avatar
雪洛 已提交
250
        cursor: -1,
251
        cursor_color: "#3393E2",
张磊 已提交
252 253 254 255 256 257 258 259 260 261
        selectionStart: -1,
        selectionEnd: -1,
        inputEventDetail: '',
        focusAndBlurEventDetail: '',
        confirmEventDetail: '',
        keyboardHeightChangeEventDetail: '',
        focus: true,
        inputPassword: true,
        inputTypeTel: "tel",
        inputPlaceHolderStyle: "color:red",
雪洛's avatar
雪洛 已提交
262
        inputPlaceHolderClass: "uni-input-placeholder-class",
H
hdx 已提交
263 264 265 266 267 268
        inputMaxLengthValue: "",
        onMaxLengthInputValue: "",
        inputMaxLengthFocus: false,
        inputPasswordValue: "",
        inputFocusKeyBoardChangeValue: true,
        holdKeyboard: false
张磊 已提交
269 270
      }
    },
雪洛's avatar
雪洛 已提交
271
    methods: {
H
hdx 已提交
272
      inputFocusKeyBoardChange(e : InputKeyboardHeightChangeEvent) {
雪洛's avatar
雪洛 已提交
273 274
        this.inputFocusKeyBoardChangeValue = e.detail.height > 50
      },
H
hdx 已提交
275
      onMaxLengthInput(event : InputEvent) {
雪洛's avatar
雪洛 已提交
276
        this.onMaxLengthInputValue = event.detail.value
张磊 已提交
277 278
      },
      setCursor: function (cursor : number) {
Q
qiang 已提交
279
        (this.$refs['input'] as UniInputElement).focus();
张磊 已提交
280 281 282
        this.cursor = cursor;
      },
      setSelection: function (selectionStart : number, selectionEnd : number) {
Q
qiang 已提交
283
        (this.$refs['input2'] as UniInputElement).focus();
张磊 已提交
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320
        this.selectionStart = selectionStart;
        this.selectionEnd = selectionEnd;
      },
      clearInput: function (event : InputEvent) {
        this.inputClearValue = event.detail.value
        if (event.detail.value.length > 0) {
          this.showClearIcon = true
        } else {
          this.showClearIcon = false
        }
      },
      clearIcon: function () {
        this.inputClearValue = ''
        this.showClearIcon = false
      },
      changePassword: function () {
        this.showPassword = !this.showPassword
      },
      onInput: function (event : InputEvent) {
        console.log("键盘输入", JSON.stringify(event.detail));
        this.inputEventDetail = JSON.stringify(event.detail)
      },
      onFocus: function (event : InputFocusEvent) {
        console.log("输入框聚焦", JSON.stringify(event.detail));
        this.focusAndBlurEventDetail = JSON.stringify(event.detail);
      },
      onBlur: function (event : InputBlurEvent) {
        console.log("输入框失去焦点", JSON.stringify(event.detail));
        this.focusAndBlurEventDetail = JSON.stringify(event.detail);
      },
      onConfirm: function (event : InputConfirmEvent) {
        console.log("点击完成按钮", JSON.stringify(event.detail));
        this.confirmEventDetail = JSON.stringify(event.detail);
      },
      onKeyborardHeightChange: function (event : InputKeyboardHeightChangeEvent) {
        console.log("键盘高度发生变化", JSON.stringify(event.detail));
        this.keyboardHeightChangeEventDetail = JSON.stringify(event.detail);
雪洛's avatar
雪洛 已提交
321
      },
H
hdx 已提交
322
      test_check_input_value() : number {
雪洛's avatar
雪洛 已提交
323 324
        return this.onMaxLengthInputValue.length
      },
H
hdx 已提交
325
      changeCursorColor(event : UniSwitchChangeEvent) {
H
hdx 已提交
326 327 328 329 330 331 332
        const checked = event.detail.value;
        if (checked) {
          this.cursor_color = "red"
        } else {
          this.cursor_color = "#3393E2"
        }
        const input = uni.getElementById<UniInputElement>("uni-input-cursor-color")
333
        input?.focus()
H
hdx 已提交
334
      },
H
hdx 已提交
335
      changeHoldKeyboard(event : UniSwitchChangeEvent) {
H
hdx 已提交
336 337
        const checked = event.detail.value;
        this.holdKeyboard = checked
338
      }
张磊 已提交
339 340
    }
  }
Y
init  
yurj26 已提交
341 342 343
</script>

<style scoped>
雪洛's avatar
雪洛 已提交
344
  .input-wrapper {
张磊 已提交
345 346
    display: flex;
    padding: 8px 13px;
H
hdx 已提交
347
    margin: 5px 0;
张磊 已提交
348 349 350 351
    flex-direction: row;
    flex-wrap: nowrap;
    background-color: #ffffff;
  }
Y
init  
yurj26 已提交
352

张磊 已提交
353 354 355 356 357 358 359
  .uni-input {
    height: 28px;
    font-size: 15px;
    padding: 0px;
    flex: 1;
    background-color: #ffffff;
  }
Y
init  
yurj26 已提交
360

张磊 已提交
361 362 363 364
  .uni-icon {
    width: 24px;
    height: 24px;
  }
Y
init  
yurj26 已提交
365

张磊 已提交
366
  .uni-input-placeholder-class {
367
    font-size: 10px;
雪洛's avatar
雪洛 已提交
368
  }
H
hdx 已提交
369
</style>