Skip to content

Input 输入框

规则

基础示例

js
const rule = {
    type:"input",
    title:"商品名称",
    field:"goods_name",
    value:"iphone 7",
    props: {
        disabled: true,
    }
}

Props 配置示例

文本输入框(text)

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

文本域(textarea)

js
const rule = {
    type:"input",
    title:"商品描述",
    field:"description",
    props: {
        type: "textarea",
        placeholder: "请输入商品描述",
        rows: 4,
        autosize: { minRows: 3, maxRows: 6 },
    }
}

密码输入框(password)

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

可清空输入框

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

显示字数统计

js
const rule = {
    type:"input",
    title:"商品描述",
    field:"description",
    props: {
        type: "textarea",
        placeholder: "请输入商品描述",
        maxlength: 200,
        showCount: 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: {
        'update:value': (value) => {
            console.log('输入值改变:', value);
        },
        blur: () => {
            console.log('失去焦点');
        },
        focus: () => {
            console.log('获得焦点');
        },
        clear: () => {
            console.log('清空输入');
        },
    },
}

实时搜索(update:value 事件)

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

联动更新其他字段(update:value 事件)

js
const rule = [
    {
        type:"input",
        title:"商品名称",
        field:"goods_name",
        props: {
            placeholder: "请输入商品名称",
        },
        inject: true,
        on: {
            'update:value': ($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,
        },
    },
]

完整配置项:naive-ui_Input

value :String

Props

名称类型默认值说明版本
autofocusbooleanfalse是否自动获取焦点
autosizeboolean | { minRows?: number, maxRows?: number }false自适应内容高度,只对 type="textarea" 有效,可传入对象,如 { minRows: 1, maxRows: 3 }
clearablebooleanfalse是否可清空
disabledbooleanfalse是否禁用
input-propsHTMLInputAttributesundefinedInput 组建内部 input 元素的属性,对 pair 类型不生效,在这里查看原生属性。注意:input-props 不会覆盖内部 input 元素的已经存在的属性(除了 type
loadingbooleanundefined是否展示加载图标,设为非 undefined 会占据空间
maxlengthnumberundefined最大输入长度
minlengthnumberundefined最小输入长度
pairbooleanfalse是否输入成对的值
passively-activatedbooleanfalse是否被动激活输入框
placeholderstring | [string, string]undefined文本输入的占位符。如果 pairtrueplaceholder是一个数组
readonlybooleanfalse是否只读
roundbooleanfalse输入框是否圆角
rowsnumber3输入框行数,对 type="textarea" 有效
separatorstringundefined成对输入框中间的分隔符
show-countbooleanfalse是否显示字数统计
show-password-on'click' | 'mousedown'undefined显示密码的时机
size'small' | 'medium' | 'large''medium'输入框尺寸
status'success' | 'warning' | 'error'undefined验证状态2.25.0
type'text' | 'password' | 'textarea''text'输入框类型
on-blur() => voidundefined输入框失去焦点时触发
on-change(value: string | [string, string]) => voidundefined原生 change 事件触发时触发
on-clear() => voidundefined输入框点击清空按钮时触发
on-focus() => voidundefined输入框获得焦点时触发
on-input(value: string | [string, string]) => voidundefined输入框在用户输入时触发
on-update:value(value: string | [string, string]) => voidundefined输入框值 change 时触发

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