Skip to content

InputNumber 数字输入框

规则

基础示例

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

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: 99.99,
    props: {
        precision: 2,
        step: 0.01,
        placeholder: "请输入价格",
    },
}

前后缀标签

js
const rule = {
    type: "InputNumber",
    field: "price",
    title: "价格",
    value: 0,
    props: {
        addonBefore: "¥",
        addonAfter: "元",
        min: 0,
        precision: 2,
    },
}

禁用控制按钮

js
const rule = {
    type: "InputNumber",
    field: "score",
    title: "评分",
    value: 0,
    props: {
        controls: false,
        min: 0,
        max: 100,
        placeholder: "请输入0-100的分数",
    },
}

Events 事件示例

监听数值变化

js
const rule = {
    type: "InputNumber",
    field: "price",
    title: "商品价格",
    value: 0,
    props: {
        min: 0,
        precision: 2,
        placeholder: "请输入价格",
    },
    on: {
        change: (value) => {
            console.log('数值改变:', value);
        },
        pressEnter: (e) => {
            console.log('按下回车:', e);
        },
        step: (value, info) => {
            console.log('点击箭头:', value, info);
        },
    },
}

数值变化后计算总价

js
const rule = [
    {
        type: "InputNumber",
        field: "price",
        title: "单价",
        value: 0,
        props: {
            min: 0,
            precision: 2,
        },
        inject: true,
        on: {
            change: ($inject, value) => {
                // 自动计算总价
                const quantity = $inject.api.getValue('quantity') || 1;
                const total = value * quantity;
                $inject.api.setValue('total', total.toFixed(2));
            },
        },
    },
    {
        type: "InputNumber",
        field: "quantity",
        title: "数量",
        value: 1,
        props: {
            min: 1,
        },
        inject: true,
        on: {
            change: ($inject, value) => {
                // 自动计算总价
                const price = $inject.api.getValue('price') || 0;
                const total = price * value;
                $inject.api.setValue('total', total.toFixed(2));
            },
        },
    },
    {
        type: "InputNumber",
        field: "total",
        title: "总价",
        props: {
            disabled: true,
            precision: 2,
        },
    },
]

完整配置项:Ant-design-vue_InputNumber

value :Number

Props

成员说明类型默认值
addonAfter带标签的 input,设置后置标签slot-
addonBefore带标签的 input,设置前置标签slot-
autofocus自动获取焦点booleanfalse
bordered是否有边框booleantrue
controls是否显示增减按钮booleantrue
decimalSeparator小数点string-
disabled禁用booleanfalse
formatter指定输入框展示值的格式function(value: number | string, info: { userTyping: boolean, input: string }): string-
keyboard是否启用键盘快捷行为booleantrue
max最大值numberInfinity
min最小值number-Infinity
parser指定从 formatter 里转换回数字的方式,和 formatter 搭配使用function( string): number-
precision数值精度number-
prefix带有前缀图标的 inputslot-
size输入框大小string-
status设置校验状态'error' | 'warning'-
step每次改变步数,可以为小数number|string1
stringMode字符值模式,开启后支持高精度小数。同时 change 事件将返回 string 类型booleanfalse
upIcon自定义上箭头图标slot<UpOutlined />
downIcon自定义下箭头图标slot<DownOutlined />

Events

事件名称说明回调参数
change变化回调Function(value: number | string)
pressEnter按下回车的回调function(e)
step点击上下箭头的回调(value: number, info: { offset: number, type: 'up' | 'down' }) => void

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