Input 输入框

概述

基本表单组件,支持 input 和 textarea,并在原生控件基础上进行了功能扩展,可以组合使用。

注意:非 template/render 模式下,需使用 i-input

代码示例

Input 输入框 - 图1

基础用法

基本用法,可以使用 v-model 实现数据的双向绑定。

可以直接设置 style 来改变输入框的宽度,默认 100%。

  1. <template>
  2. <Input v-model="value" placeholder="Enter something..." style="width: 300px" />
  3. </template>
  4. <script>
  5. export default {
  6. data () {
  7. return {
  8. value: ''
  9. }
  10. }
  11. }
  12. </script>

Input 输入框 - 图2

尺寸

输入框有三种尺寸:大、默认(中)、小

通过设置sizelargesmall设置为大和小尺寸,不设置为默认(中)尺寸。

  1. <template>
  2. <Input v-model="value1" size="large" placeholder="large size" />
  3. <br>
  4. <Input v-model="value2" placeholder="default size" />
  5. <br>
  6. <Input v-model="value3" size="small" placeholder="small size" />
  7. </template>
  8. <script>
  9. export default {
  10. data () {
  11. return {
  12. value1: '',
  13. value2: '',
  14. value3: ''
  15. }
  16. }
  17. }
  18. </script>

Input 输入框 - 图3

可清空

开启属性 clearable 可显示清空按钮。

  1. <template>
  2. <Input v-model="value14" placeholder="Enter something..." clearable style="width: 200px" />
  3. </template>
  4. <script>
  5. export default {
  6. data () {
  7. return {
  8. value14: 'Hello World'
  9. }
  10. }
  11. }
  12. </script>

Input 输入框 - 图4

带Icon的输入框

通过 icon 属性可以在输入框右边加一个图标。

点击图标,会触发 on-click 事件。

  1. <template>
  2. <Input v-model="value4" icon="ios-clock-outline" placeholder="Enter something..." style="width: 200px" />
  3. </template>
  4. <script>
  5. export default {
  6. data () {
  7. return {
  8. value4: ''
  9. }
  10. }
  11. }
  12. </script>

Input 输入框 - 图5

前缀和后缀图标

除了设置 icon,也可以通过设置 prefixsuffix 及同名 slot 设置前缀及后缀图标。

  1. <template>
  2. <div>
  3. Props:
  4. <Input prefix="ios-contact" placeholder="Enter name" style="width: auto" />
  5. <Input suffix="ios-search" placeholder="Enter text" style="width: auto" />
  6. </div>
  7. <div style="margin-top: 6px">
  8. Slots:
  9. <Input placeholder="Enter name" style="width: auto">
  10. <Icon type="ios-contact" slot="prefix" />
  11. </Input>
  12. <Input placeholder="Enter text" style="width: auto">
  13. <Icon type="ios-search" slot="suffix" />
  14. </Input>
  15. </div>
  16. </template>
  17. <script>
  18. export default {
  19. }
  20. </script>

Input 输入框 - 图6

搜索框

开启 search 属性,可以设置为搜索型输入框。

  1. <template>
  2. <div>
  3. <Input search placeholder="Enter something..." />
  4. <Input search enter-button placeholder="Enter something..." />
  5. <Input search enter-button="Search" placeholder="Enter something..." />
  6. </div>
  7. </template>
  8. <script>
  9. export default {
  10. }
  11. </script>

Input 输入框 - 图7

文本域

通过设置属性 typetextarea 来使用文本域,用于多行输入。

通过设置属性 rows 控制文本域默认显示的行数。

  1. <template>
  2. <Input v-model="value5" type="textarea" placeholder="Enter something..." />
  3. <Input v-model="value6" type="textarea" :rows="4" placeholder="Enter something..." />
  4. </template>
  5. <script>
  6. export default {
  7. data () {
  8. return {
  9. value5: '',
  10. value6: ''
  11. }
  12. }
  13. }
  14. </script>

Input 输入框 - 图8

适应文本高度的文本域

设置属性 autosize,文本域会自动适应高度的变化。

autosize也可以设定为一个对象,指定最小行数和最大行数。

  1. <template>
  2. <Input v-model="value7" type="textarea" :autosize="true" placeholder="Enter something..." />
  3. <Input v-model="value8" type="textarea" :autosize="{minRows: 2,maxRows: 5}" placeholder="Enter something..." />
  4. </template>
  5. <script>
  6. export default {
  7. data () {
  8. return {
  9. value7: '',
  10. value8: ''
  11. }
  12. }
  13. }
  14. </script>

Input 输入框 - 图9

禁用状态

通过添加disabled属性可设置为不可用状态。

  1. <template>
  2. <Input v-model="value9" disabled placeholder="Enter something..." />
  3. <Input v-model="value10" disabled type="textarea" placeholder="Enter something..." />
  4. </template>
  5. <script>
  6. export default {
  7. data () {
  8. return {
  9. value9: '',
  10. value10: ''
  11. }
  12. }
  13. }
  14. </script>

Input 输入框 - 图10

复合型输入框

通过前置和后置的 slot 可以实现复合型的输入框。

  1. <template>
  2. <Input v-model="value11">
  3. <span slot="prepend">http://</span>
  4. <span slot="append">.com</span>
  5. </Input>
  6. <br>
  7. <Input v-model="value12">
  8. <Select v-model="select1" slot="prepend" style="width: 80px">
  9. <Option value="http">http://</Option>
  10. <Option value="https">https://</Option>
  11. </Select>
  12. <Select v-model="select2" slot="append" style="width: 70px">
  13. <Option value="com">.com</Option>
  14. <Option value="org">.org</Option>
  15. <Option value="io">.io</Option>
  16. </Select>
  17. </Input>
  18. <br>
  19. <Input v-model="value13">
  20. <Select v-model="select3" slot="prepend" style="width: 80px">
  21. <Option value="day">Day</Option>
  22. <Option value="month">Month</Option>
  23. </Select>
  24. <Button slot="append" icon="ios-search"></Button>
  25. </Input>
  26. </template>
  27. <script>
  28. export default {
  29. data () {
  30. return {
  31. value11: '',
  32. value12: '',
  33. value13: '',
  34. select1: 'http',
  35. select2: 'com',
  36. select3: 'day'
  37. }
  38. }
  39. }
  40. </script>

Input 输入框 - 图11

输入时格式化展示

结合 Poptip 组件,实现一个数值输入框,方便内容超长时的全量展现。

  1. <template>
  2. <Poptip trigger="focus">
  3. <Input v-model="value15" prefix="logo-usd" placeholder="Enter number" style="width: 120px" />
  4. <div slot="content">{{ formatNumber }}</div>
  5. </Poptip>
  6. </template>
  7. <script>
  8. export default {
  9. data () {
  10. return {
  11. value15: ''
  12. }
  13. },
  14. computed: {
  15. formatNumber () {
  16. if (this.value15 === '') return 'Enter number';
  17. function parseNumber(str) {
  18. const re = /(?=(?!)(d{3})+$)/g;
  19. return str.replace(re, ',');
  20. }
  21. return parseNumber(this.value15);
  22. }
  23. }
  24. }
  25. </script>

API

Input props

属性说明类型默认值
type输入框类型,可选值为 textpasswordtextareaurlemaildatenumbertelStringtext
value绑定的值,可使用 v-model 双向绑定String | Number
size输入框尺寸,可选值为largesmalldefault或者不设置String-
placeholder占位文本String-
clearable是否显示清空按钮Booleanfalse
disabled设置输入框为禁用状态Booleanfalse
readonly设置输入框为只读Booleanfalse
maxlength最大输入长度Number-
icon输入框尾部图标,仅在 text 类型下有效String-
prefix输入框头部图标String-
suffix输入框尾部图标String-
search是否显示为搜索型输入框Booleanfalse
enter-button开启 search 时可用,是否有确认按钮,可设为按钮文字Boolean | Stringfalse
rows文本域默认行数,仅在 textarea 类型下有效Number2
autosize自适应内容高度,仅在 textarea 类型下有效,可传入对象,如 { minRows: 2, maxRows: 6 }Boolean | Objectfalse
number将用户的输入转换为 Number 类型Booleanfalse
autofocus自动获取焦点Booleanfalse
autocomplete原生的自动完成功能,可选值为 off 和 onStringoff
element-id给表单元素设置 id,详见 Form 用法。String-
spellcheck原生的 spellcheck 属性Booleanfalse
wrap原生的 wrap 属性,可选值为 hard 和 soft,仅在 textarea 下生效Stringsoft

Input events

事件名说明返回值
on-enter按下回车键时触发
on-click设置 icon 属性后,点击图标时触发
on-change数据改变时触发event
on-focus输入框聚焦时触发
on-blur输入框失去焦点时触发
on-keyup原生的 keyup 事件event
on-keydown原生的 keydown 事件event
on-keypress原生的 keypress 事件event
on-search开启 search 时可用,点击搜索或按下回车键时触发value
on-clear 3.4.0开启 clearable 时可用,点击清空按钮时触发

Input slot

名称说明
prepend前置内容,仅在 text 类型下有效
append后置内容,仅在 text 类型下有效
prefix输入框头部图标
suffix输入框尾部图标

Input methods

方法名说明参数
focus手动聚焦输入框