Skip to content

InputNumber 数字输入框

规则

基础示例

js
const rule = {
    type: "InputNumber",
    field: "price",
    title: "价格",
    value: 1,
    props: {
        clearable: true
    },
}

Props 配置示例

设置最小值和最大值

js
const rule = {
    type: "InputNumber",
    field: "quantity",
    title: "购买数量",
    value: 1,
    props: {
        min: 1,
        max: 100,
        step: 1,
    }
}

设置步长和精度

js
const rule = {
    type: "InputNumber",
    field: "price",
    title: "商品价格",
    value: 0,
    props: {
        min: 0,
        step: 0.01,
        placeholder: "请输入价格",
        clearable: true,
    }
}

禁用状态

js
const rule = {
    type: "InputNumber",
    field: "total",
    title: "总价",
    value: 0,
    props: {
        disabled: true,
    }
}

隐藏按钮

js
const rule = {
    type: "InputNumber",
    field: "score",
    title: "评分",
    value: 0,
    props: {
        showButton: false,
        min: 0,
        max: 100,
    }
}

Events 事件示例

监听数值变化

js
const rule = {
    type: "InputNumber",
    field: "quantity",
    title: "购买数量",
    value: 1,
    props: {
        min: 1,
        max: 100,
    },
    on: {
        'update:value': (value) => {
            console.log('数值改变:', value);
        },
        blur: () => {
            console.log('失去焦点');
        },
        focus: () => {
            console.log('获得焦点');
        },
    },
}

联动计算总价

js
const rule = [
    {
        type: "InputNumber",
        field: "quantity",
        title: "购买数量",
        value: 1,
        props: {
            min: 1,
            max: 100,
        },
        inject: true,
        on: {
            'update:value': ($inject, value) => {
                // 根据数量和单价计算总价
                const price = $inject.api.getValue('price') || 0;
                $inject.api.setValue('total', (price * value).toFixed(2));
            },
        },
    },
    {
        type: "InputNumber",
        field: "price",
        title: "单价",
        value: 0,
        props: {
            min: 0,
            step: 0.01,
        },
        inject: true,
        on: {
            'update:value': ($inject, value) => {
                // 根据数量和单价计算总价
                const quantity = $inject.api.getValue('quantity') || 0;
                $inject.api.setValue('total', (value * quantity).toFixed(2));
            },
        },
    },
    {
        type: "InputNumber",
        field: "total",
        title: "总价",
        value: 0,
        props: {
            disabled: true,
        },
    },
]

完整配置项:naive-ui_InputNumber

value :Number

Props

名称类型默认值说明
borderedbooleantrue是否有边框
clearablebooleanfalse是否可清空
disabledbooleanfalse是否禁用
keyboard{ ArrowUp?: boolean, ArrowDown?: boolean }{}控制允许的键盘操作,属性值设为 false 的时候会禁用对应的键盘操作
loadingbooleanundefined是否展示加载图标,设为非 undefined 会占据空间
maxnumberundefined最大值
minnumberundefined最小值
placeholderstring'请输入'提示信息
show-buttonbooleantrue是否有按钮
size'small' | 'medium' | 'large''medium'输入框大小
stepnumber1每次改变步数,可以为小数
update-value-on-inputbooleantrue在输入的过程中,在输入值合法的情况下,是否改变值
validator(value) => booleanundefined设置自定义验证
on-blur(event: FocusEvent) => voidundefined移除焦点的回调
on-clear() => voidundefined点击清空按钮时的回调
on-focus(event: FocusEvent) => voidundefined获取焦点的回调
on-update:value(value: number | null) => voidundefined组件值发生变化的回调

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