input.uvue 13.7 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
          <input ref="input" class="uni-input" value="0123456789" :cursor="cursor" @blur="onCursorBlurChange"/>
张磊 已提交
131 132
        </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
          <input ref="input2" class="uni-input" value="0123456789" :selection-start="selectionStart"
140
            :selection-end="selectionEnd" @blur="onSelectionBlurChange"/>
张磊 已提交
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",
W
wanganxp 已提交
262
        inputPlaceHolderClass: "uni-input-placeholder-class" as string.ClassString ,
H
hdx 已提交
263 264 265 266 267 268
        inputMaxLengthValue: "",
        onMaxLengthInputValue: "",
        inputMaxLengthFocus: false,
        inputPasswordValue: "",
        inputFocusKeyBoardChangeValue: true,
        holdKeyboard: false
张磊 已提交
269 270
      }
    },
雪洛's avatar
雪洛 已提交
271
    methods: {
272
      inputFocusKeyBoardChange(e : UniInputKeyboardHeightChangeEvent) {
雪洛's avatar
雪洛 已提交
273 274
        this.inputFocusKeyBoardChangeValue = e.detail.height > 50
      },
275
      onMaxLengthInput(event : UniInputEvent) {
雪洛'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 283
        this.cursor = cursor;
      },
      onCursorBlurChange(){
        this.cursor = 0
张磊 已提交
284 285
      },
      setSelection: function (selectionStart : number, selectionEnd : number) {
Q
qiang 已提交
286
        (this.$refs['input2'] as UniInputElement).focus();
张磊 已提交
287
        this.selectionStart = selectionStart;
288 289 290 291
        this.selectionEnd = selectionEnd;
      },
      onSelectionBlurChange(){
        this.selectionEnd = 0;
张磊 已提交
292
      },
293
      clearInput: function (event : UniInputEvent) {
张磊 已提交
294 295 296 297 298 299 300 301 302 303 304 305 306 307
        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
      },
308
      onInput: function (event : UniInputEvent) {
张磊 已提交
309 310 311
        console.log("键盘输入", JSON.stringify(event.detail));
        this.inputEventDetail = JSON.stringify(event.detail)
      },
312
      onFocus: function (event : UniInputFocusEvent) {
张磊 已提交
313 314 315
        console.log("输入框聚焦", JSON.stringify(event.detail));
        this.focusAndBlurEventDetail = JSON.stringify(event.detail);
      },
316
      onBlur: function (event : UniInputBlurEvent) {
张磊 已提交
317 318 319
        console.log("输入框失去焦点", JSON.stringify(event.detail));
        this.focusAndBlurEventDetail = JSON.stringify(event.detail);
      },
320
      onConfirm: function (event : UniInputConfirmEvent) {
张磊 已提交
321 322 323
        console.log("点击完成按钮", JSON.stringify(event.detail));
        this.confirmEventDetail = JSON.stringify(event.detail);
      },
324
      onKeyborardHeightChange: function (event : UniInputKeyboardHeightChangeEvent) {
张磊 已提交
325 326
        console.log("键盘高度发生变化", JSON.stringify(event.detail));
        this.keyboardHeightChangeEventDetail = JSON.stringify(event.detail);
雪洛's avatar
雪洛 已提交
327
      },
H
hdx 已提交
328
      test_check_input_value() : number {
雪洛's avatar
雪洛 已提交
329 330
        return this.onMaxLengthInputValue.length
      },
H
hdx 已提交
331
      changeCursorColor(event : UniSwitchChangeEvent) {
H
hdx 已提交
332 333 334 335 336 337 338
        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")
339
        input?.focus()
H
hdx 已提交
340
      },
H
hdx 已提交
341
      changeHoldKeyboard(event : UniSwitchChangeEvent) {
H
hdx 已提交
342 343
        const checked = event.detail.value;
        this.holdKeyboard = checked
344
      }
张磊 已提交
345 346
    }
  }
Y
init  
yurj26 已提交
347 348 349
</script>

<style scoped>
雪洛's avatar
雪洛 已提交
350
  .input-wrapper {
张磊 已提交
351 352
    display: flex;
    padding: 8px 13px;
H
hdx 已提交
353
    margin: 5px 0;
张磊 已提交
354 355 356 357
    flex-direction: row;
    flex-wrap: nowrap;
    background-color: #ffffff;
  }
Y
init  
yurj26 已提交
358

张磊 已提交
359 360 361 362 363 364 365
  .uni-input {
    height: 28px;
    font-size: 15px;
    padding: 0px;
    flex: 1;
    background-color: #ffffff;
  }
Y
init  
yurj26 已提交
366

张磊 已提交
367 368 369 370
  .uni-icon {
    width: 24px;
    height: 24px;
  }
Y
init  
yurj26 已提交
371

张磊 已提交
372
  .uni-input-placeholder-class {
373
    font-size: 10px;
雪洛's avatar
雪洛 已提交
374
  }
H
hdx 已提交
375
</style>