Skip to content

NumberBox 步进器

该组件用于通过加减按钮来控制数值的增减,常用于购物车商品数量选择、数量调节等场景。

  • 支持设置最小值和最大值限制
  • 支持设置步长和小数位数
  • 支持禁用输入框直接编辑
  • 支持单独禁用加减按钮
  • 提供方法调用能力(getValue、plus、minus)

注意

该组件在不同平台上的表现可能存在细微差异,请以实际效果为准。

平台差异说明

App(vue)App(nvue)H5小程序

基本使用

  • 通过 v-model 绑定数值,默认值为 0
  • 通过 minmax 设置取值范围。
html
<see-number-box v-model="value" />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(1);
</script>

步长设置

  • 通过 step 设置每次点击加减按钮时的变化量,默认为 1
html
<see-number-box v-model="value" :step="5" />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(10);
</script>

小数位数

  • 通过 decimalLength 设置数值保留的小数位数。
html
<see-number-box v-model="value" :step="0.1" :decimalLength="1" />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(1.0);
</script>

限制范围

  • 通过 min 设置最小值,默认为 0
  • 通过 max 设置最大值,默认为 Infinity
html
<see-number-box v-model="value" :min="1" :max="10" />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(5);
</script>

禁用输入

  • 通过设置 isDisabledInputtrue 来禁止直接编辑输入框,只能通过加减按钮操作。
html
<see-number-box v-model="value" isDisabledInput />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(1);
</script>

禁用加减按钮

  • 通过设置 isDisabledPlustrue 来禁用加号按钮。
  • 通过设置 isDisabledMinustrue 来禁用减号按钮。
html
<see-number-box v-model="value" isDisabledPlus />
<see-number-box v-model="value" isDisabledMinus />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(1);
</script>

禁用状态

  • 通过设置 isDisabledtrue 来禁用整个步进器。
  • 禁用状态下,所有操作均不可用。
html
<see-number-box v-model="value" isDisabled />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(1);
</script>

只读状态

  • 通过设置 isReadonlytrue 来设置步进器为只读状态。
  • 只读状态下,操作不会触发,但样式保持不变。
html
<see-number-box v-model="value" isReadonly />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(1);
</script>

不同尺寸

  • 通过 size 参数设置步进器大小,可选值为 smalldefaultlarge
html
<see-number-box v-model="value" size="small" />
<see-number-box v-model="value" size="default" />
<see-number-box v-model="value" size="large" />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(1);
</script>

异步变更

  • 通过设置 isAsynctrue 来启用异步变更模式。
  • 异步模式下,值不会自动更新,需手动通过 v-model 更新,适用于需要在 onChange 中做异步校验的场景。
html
<see-number-box v-model="value" isAsync @onChange="onChange" />

<script lang="ts" setup>
import { ref } from 'vue';
const value = ref(1);

const onChange = (val: number) => {
  // 异步校验通过后手动更新
  value.value = val;
};
</script>

API

Props

参数名说明类型默认值可选值平台差异
modelValue绑定值number0--
min最小值number0--
max最大值numberInfinity--
step步长number1任意正数-
isDisabled是否禁用booleanfalsetruefalse-
isReadonly是否只读booleanfalsetruefalse-
isDisabledInput是否禁用输入框booleanfalsetruefalse-
isDisabledPlus是否禁用加号按钮booleanfalsetruefalse-
isDisabledMinus是否禁用减号按钮booleanfalsetruefalse-
decimalLength小数位数number-任意非负整数-
size尺寸"small" | "default" | "large"'default'smalldefaultlarge-
inputWidth输入框宽度(px)number60任意正数-
isAsync是否为异步变更模式booleanfalsetruefalse-
name表单字段名string''--

Events

事件名说明回调参数
onChange值变化时触发value: 当前值
onOverlimit数值超出范围限制时触发value: 当前值
onPlus点击加号按钮时触发value: 当前值
onMinus点击减号按钮时触发value: 当前值
onFocus输入框获得焦点时触发event: 焦点事件对象
onBlur输入框失去焦点时触发event: 焦点事件对象

Methods

通过 ref 获取组件实例后调用。

方法名说明参数返回值
getValue获取当前值-number
plus执行加操作--
minus执行减操作--

辽 ICP 备 2025070134 号