Skip to content

Input/Field 输入框

input

规则

基础示例

js
const rule = {
    type:"input",
    title:"商品名称",
    field:"goods_name",
    value:"iphone 7",
    props: {
        placeholder: '请输入商品名称',
        disabled: false,
    }
}

Props 配置示例

单行输入框(text)

js
const rule = {
    type:"input",
    title:"用户名",
    field:"username",
    props: {
        placeholder: '请输入用户名',
        clearable: true,
        leftIcon: 'user-o',
    }
}

多行输入框(textarea)

js
const rule = {
    type: 'field',
    title: '商品简介',
    field: 'goods_info',
    value: '',
    props: {
        placeholder: '请输入商品简介',
        type: 'textarea',
        autosize: true,
        rows: 4,
    }
}

密码输入框(password)

js
const rule = {
    type:"input",
    title:"密码",
    field:"password",
    props: {
        type: 'password',
        placeholder: '请输入密码',
        clearable: true,
    }
}

数字输入框(number/digit)

js
const rule = {
    type:"input",
    title:"手机号",
    field:"phone",
    props: {
        type: 'digit',
        placeholder: '请输入手机号',
        maxlength: 11,
        clearable: true,
    }
}

可清空输入框

js
const rule = {
    type:"input",
    title:"搜索关键词",
    field:"keyword",
    props: {
        placeholder: '请输入搜索关键词',
        clearable: true,
        clearTrigger: 'always',
        leftIcon: 'search',
    }
}

显示字数统计

js
const rule = {
    type: 'field',
    title: '商品描述',
    field: 'description',
    props: {
        type: 'textarea',
        placeholder: '请输入商品描述',
        maxlength: 200,
        showWordLimit: true,
    }
}

禁用和只读

js
const rule = {
    type:"input",
    title:"订单号",
    field:"order_no",
    value:"ORD20240101001",
    props: {
        disabled: true,
        // 或使用 readonly: true,
    }
}

Events 事件示例

监听输入变化和焦点事件

js
const rule = {
    type:"input",
    title:"搜索关键词",
    field:"keyword",
    props: {
        placeholder: '请输入搜索关键词',
        clearable: true,
    },
    on: {
        input: (value) => {
            console.log('输入值改变:', value);
        },
        blur: (event) => {
            console.log('失去焦点:', event);
        },
        focus: (event) => {
            console.log('获得焦点:', event);
        },
        clear: (event) => {
            console.log('清空输入');
        },
    },
}

实时搜索(input 事件)

js
const rule = {
    type:"input",
    title:"搜索商品",
    field:"keyword",
    props: {
        placeholder: '请输入商品名称搜索',
        clearable: true,
        leftIcon: 'search',
    },
    inject: true,
    on: {
        input: ($inject, value) => {
            // 实时搜索:输入时自动触发搜索
            if (value && value.length >= 2) {
                // 调用搜索接口
                searchProducts(value).then(res => {
                    // 更新搜索结果
                    $inject.api.setValue('searchResults', res.data);
                });
            }
        },
    },
}

联动更新其他字段(input 事件)

js
const rule = [
    {
        type:"input",
        title:"商品名称",
        field:"goods_name",
        props: {
            placeholder: '请输入商品名称',
        },
        inject: true,
        on: {
            input: ($inject, value) => {
                // 当商品名称改变时,自动生成商品编码
                if (value) {
                    const code = 'GD' + value.substring(0, 3).toUpperCase() + Date.now().toString().slice(-6);
                    $inject.api.setValue('goods_code', code);
                }
            },
        },
    },
    {
        type:"input",
        title:"商品编码",
        field:"goods_code",
        props: {
            disabled: true,
        },
    },
]

完整配置项:Vant_Input

value :String

Props

参数说明类型默认值
v-model当前输入的值number | string-
label输入框左侧文本string-
name名称,作为提交表单时的标识符string-
id输入框 id,同时会设置 label 的 for 属性stringvan-field-n-input
type输入框类型, 支持原生 input 标签的所有 type 属性,额外支持了 digit 类型FieldTypetext
size大小,可选值为 large normalstring-
maxlength输入的最大字符数number | string-
placeholder输入框占位提示文字string-
border是否显示内边框booleantrue
disabled是否禁用输入框booleanfalse
readonly是否为只读状态,只读状态下无法输入内容booleanfalse
colon是否在 label 后面添加冒号booleanfalse
required是否显示表单必填星号boolean | 'auto'null
center是否使内容垂直居中booleanfalse
clearable是否启用清除图标,点击清除图标后会清空输入框booleanfalse
clear-icon清除图标名称或图片链接,等同于 Icon 组件的 name 属性stringclear
clear-trigger显示清除图标的时机,always 表示输入框不为空时展示, focus 表示输入框聚焦且不为空时展示FieldClearTriggerfocus
clickable是否开启点击反馈booleanfalse
is-link是否展示右侧箭头并开启点击反馈booleanfalse
autofocus是否自动聚焦,iOS 系统不支持该属性booleanfalse
show-word-limit是否显示字数统计,需要设置 maxlength 属性booleanfalse
error是否将输入内容标红booleanfalse
error-message底部错误提示文案,为空时不展示string-
error-message-align错误提示文案对齐方式,可选值为 center rightFieldTextAlignleft
formatter输入内容格式化函数(val: string) => string-
format-trigger格式化函数触发的时机,可选值为 onBlurFieldFormatTriggeronChange
arrow-direction箭头方向,可选值为 left up downstringright
label-class左侧文本额外类名string | Array | object-
label-width左侧文本宽度,默认单位为 pxnumber | string6.2em
label-align左侧文本对齐方式,可选值为 center right topFieldTextAlignleft
input-align输入框对齐方式,可选值为 center rightFieldTextAlignleft
autosize是否自适应内容高度,只对 textarea 有效, 可传入对象,如 { maxHeight: 100, minHeight: 50 }, 单位为pxboolean | FieldAutosizeConfigfalse
left-icon左侧图标名称或图片链接,等同于 Icon 组件的 name 属性string-
right-icon右侧图标名称或图片链接,等同于 Icon 组件的 name 属性string-
icon-prefix图标类名前缀,等同于 Icon 组件的 class-prefix 属性stringvan-icon

Events

事件名说明回调参数
focus输入框获得焦点时触发event: Event
blur输入框失去焦点时触发event: Event
clear点击清除按钮时触发event: MouseEvent
click点击组件时触发event: MouseEvent
clickInput点击输入区域时触发event: MouseEvent
clickLeftIcon点击左侧图标时触发event: MouseEvent
clickRightIcon点击右侧图标时触发event: MouseEvent
startValidate开始表单校验时触发-
endValidate结束表单校验时触发{ status: string, message: string }

FormCreate 是一个开源项目,基于 MIT 许可证发布,欢迎个人和企业用户免费使用