Skip to content

Stepper 数字输入框

stepper

规则

基础示例

js
const rule = {
    type: 'stepper',
    title: '数字输入',
    field: 'stepper',
    value: 6,
    props: {
        min: 5,
        max: 10
    }
}

Props 配置示例

设置数值范围

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

小数精度

js
const rule = {
    type: 'stepper',
    title: '折扣率',
    field: 'discount',
    value: 0.9,
    props: {
        min: 0,
        max: 1,
        step: 0.1,
        decimalLength: 1,
    }
}

禁用输入框

js
const rule = {
    type: 'stepper',
    title: '数量',
    field: 'quantity',
    value: 1,
    props: {
        disableInput: true,
        min: 1,
    }
}

圆角样式

js
const rule = {
    type: 'stepper',
    title: '数量',
    field: 'quantity',
    value: 1,
    props: {
        theme: 'round',
        min: 1,
    }
}

Events 事件示例

监听数值变化

js
const rule = {
    type: 'stepper',
    title: '购买数量',
    field: 'quantity',
    value: 1,
    props: {
        min: 1,
        max: 100,
    },
    on: {
        change: (value, detail) => {
            console.log('数值改变:', value, detail);
        },
        plus: () => {
            console.log('点击增加按钮');
        },
        minus: () => {
            console.log('点击减少按钮');
        },
        overlimit: () => {
            console.log('超出限制');
        },
    },
}

数值变化后计算总价

js
const rule = [
    {
        type: 'stepper',
        title: '单价',
        field: 'price',
        value: 0,
        props: {
            min: 0,
            step: 0.01,
            decimalLength: 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: 'stepper',
        title: '数量',
        field: 'quantity',
        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: 'stepper',
        title: '总价',
        field: 'total',
        props: {
            disabled: true,
            decimalLength: 2,
        },
    },
]

完整配置项:Vant_Stepper

value :Number

Props

参数说明类型默认值
min最小值number | string1
max最大值number | string-
auto-fixed是否自动校正超出限制范围的数值,设置为 false 后输入超过限制范围的数值将不会自动校正booleantrue
default-value初始值,当 v-model 为空时生效number | string1
step步长,每次点击时改变的值number | string1
name标识符,通常为一个唯一的字符串或数字,可以在 change 事件回调参数中获取number | string-
input-width输入框宽度,默认单位为 pxnumber | string32px
button-size按钮大小以及输入框高度,默认单位为 pxnumber | string28px
decimal-length固定显示的小数位数number | string-
theme样式风格,可选值为 roundstring-
placeholder输入框占位提示文字string-
integer是否只允许输入整数booleanfalse
disabled是否禁用步进器booleanfalse
disable-plus是否禁用增加按钮booleanfalse
disable-minus是否禁用减少按钮booleanfalse
disable-input是否禁用输入框booleanfalse
before-change输入值变化前的回调函数,返回 false 可阻止输入,支持返回 Promise(value: number | string) => boolean | Promise<boolean>false
show-plus是否显示增加按钮booleantrue
show-minus是否显示减少按钮booleantrue
show-input是否显示输入框booleantrue
long-press是否开启长按手势,开启后可以长按增加和减少按钮booleantrue
allow-empty是否允许输入的值为空,设置为 true 后允许传入空字符串booleanfalse

Events

事件名说明回调参数
change当绑定值变化时触发的事件value: string, detail: { name: string }
overlimit点击不可用的按钮时触发-
plus点击增加按钮时触发-
minus点击减少按钮时触发-
focus输入框聚焦时触发event: Event
blur输入框失焦时触发event: Event

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