• Input 输入框
    • 概述
    • 代码示例
    • API
      • Input props
      • Input events
      • Input slot
      • Input methods

    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

    输入长度限制

    4.0.0 开启属性 show-word-limit 可以显示字数统计,需配合 maxlength 属性来限制输入长度。

    1. <template>
    2. <div>
    3. <Input v-model="value16" maxlength="10" show-word-limit placeholder="Enter something..." style="width: 200px" />
    4. <Input v-model="value17" maxlength="100" show-word-limit type="textarea" placeholder="Enter something..." style="width: 200px" />
    5. </div>
    6. </template>
    7. <script>
    8. export default {
    9. data () {
    10. return {
    11. value16: '',
    12. value17: ''
    13. }
    14. }
    15. }
    16. </script>

    Input 输入框 - 图5

    密码框

    4.0.0 在 type="password" 时,开启属性 password 可以切换显示隐藏密码。

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

    Input 输入框 - 图6

    带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 输入框 - 图7

    前缀和后缀图标

    除了设置 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 输入框 - 图8

    搜索框

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

    <template>
        <div>
            <Input search placeholder="Enter something..." />
            <Input search enter-button placeholder="Enter something..." />
            <Input search enter-button="Search" placeholder="Enter something..." />
        </div>
    </template>
    <script>
        export default {
    
        }
    </script>
    

    Input 输入框 - 图9

    文本域

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

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

    <template>
        <Input v-model="value5" type="textarea" placeholder="Enter something..." />
        <Input v-model="value6" type="textarea" :rows="4" placeholder="Enter something..." />
    </template>
    <script>
        export default {
            data () {
                return {
                    value5: '',
                    value6: ''
                }
            }
        }
    </script>
    

    Input 输入框 - 图10

    适应文本高度的文本域

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

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

    <template>
        <Input v-model="value7" type="textarea" :autosize="true" placeholder="Enter something..." />
        <Input v-model="value8" type="textarea" :autosize="{minRows: 2,maxRows: 5}" placeholder="Enter something..." />
    </template>
    <script>
        export default {
            data () {
                return {
                    value7: '',
                    value8: ''
                }
            }
        }
    </script>
    

    Input 输入框 - 图11

    禁用状态

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

    <template>
        <Input v-model="value9" disabled placeholder="Enter something..." />
        <Input v-model="value10" disabled type="textarea" placeholder="Enter something..." />
    </template>
    <script>
        export default {
            data () {
                return {
                    value9: '',
                    value10: ''
                }
            }
        }
    </script>
    

    Input 输入框 - 图12

    复合型输入框

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

    <template>
        <Input v-model="value11">
            <span slot="prepend">http://</span>
            <span slot="append">.com</span>
        </Input>
        <br>
        <Input v-model="value12">
            <Select v-model="select1" slot="prepend" style="width: 80px">
                <Option value="http">http://</Option>
                <Option value="https">https://</Option>
            </Select>
            <Select v-model="select2" slot="append" style="width: 70px">
                <Option value="com">.com</Option>
                <Option value="org">.org</Option>
                <Option value="io">.io</Option>
            </Select>
        </Input>
        <br>
        <Input v-model="value13">
            <Select v-model="select3" slot="prepend" style="width: 80px">
                <Option value="day">Day</Option>
                <Option value="month">Month</Option>
            </Select>
            <Button slot="append" icon="ios-search"></Button>
        </Input>
    </template>
    <script>
        export default {
            data () {
                return {
                    value11: '',
                    value12: '',
                    value13: '',
                    select1: 'http',
                    select2: 'com',
                    select3: 'day'
                }
            }
        }
    </script>
    

    Input 输入框 - 图13

    输入时格式化展示

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

    <template>
        <Poptip trigger="focus">
            <Input v-model="value15" prefix="logo-usd" placeholder="Enter number" style="width: 120px" />
            <div slot="content">{{ formatNumber }}</div>
        </Poptip>
    </template>
    <script>
        export default {
            data () {
                return {
                    value15: ''
                }
            },
            computed: {
                formatNumber () {
                    if (this.value15 === '') return 'Enter number';
                    function parseNumber(str) {
                        const re = /(?=(?!)(d{3})+$)/g;
                        return str.replace(re, ',');
                    }
                    return parseNumber(this.value15);
                }
            }
        }
    </script>
    

    API

    Input props

    属性说明类型默认值
    type输入框类型,可选值为 textpasswordtextareaurlemaildatenumbertelStringtext
    value绑定的值,可使用 v-model 双向绑定String | Number
    size输入框尺寸,可选值为largesmalldefault或者不设置String-
    placeholder占位文本String-
    clearable是否显示清空按钮Booleanfalse
    disabled设置输入框为禁用状态Booleanfalse
    readonly设置输入框为只读Booleanfalse
    maxlength最大输入长度Number-
    show-word-limit 4.0.0是否显示输入字数统计,可以配合 maxlength 使用Booleanfalse
    password 4.0.0是否显示切换密码图标Booleanfalse
    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原生的自动完成功能Stringoff
    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手动聚焦输入框