Skip to content

NumberBox 步进器 ​

uvx-number-box 用于数值加减和输入,支持范围、步长、整数、小数位、长按、异步变更和按钮插槽。

平台兼容性 ​

AndroidiOS鸿蒙H5微信
3.9+4.11+4.61+4.0+4.41+

平台能力 ​

能力AndroidiOS鸿蒙H5微信
加减、输入、范围、步长和小数格式√√√√√
长按连续操作、异步变更和边界事件√√√√√
加减按钮与输入框插槽√√√√√

使用须知

  1. 所有值都会先过滤非数字字符,再限制到 min-max;integer=true 时移除小数部分。
  2. decimal-length 非空时使用 toFixed 返回字符串,因此 v-model 可能从数字变为字符串。
  3. async-change=true 时不会触发 input 和 update:modelValue,但仍触发包含目标值的 change。
  4. 长按 600ms 后执行一次,此后每 250ms 连续加减;long-press=false 只关闭连续操作,不影响普通点击。
  5. 达到边界、整体禁用或单独禁用按钮时触发 overlimit,不会触发 plus、minus 或数值变化事件。

基础用法 ​

vue
<template>
   <uvx-number-box v-model="value" @change="handleChange"></uvx-number-box>
</template>

<script lang="uts" setup>
import type { ChangeDetail } from "@/uni_modules/uvx-ui/components/uvx-number-box/types/index.uts";

const value = ref<number>(1);

const handleChange = (detail: ChangeDetail): void => {
   console.log(detail.value);
};
</script>

范围和步长 ​

vue
<uvx-number-box
   :model-value="1"
   :min="1"
   :max="10"
   :step="2"
></uvx-number-box>

整数和小数位 ​

vue
<template>
   <uvx-number-box :model-value="2" :integer="true"></uvx-number-box>
   <uvx-number-box :model-value="2.5" :decimal-length="2"></uvx-number-box>
</template>

禁用控制 ​

vue
<template>
   <uvx-number-box :model-value="1" :disabled="true"></uvx-number-box>
   <uvx-number-box :model-value="1" :disabled-input="true"></uvx-number-box>
   <uvx-number-box :model-value="1" :disable-minus="true"></uvx-number-box>
</template>

异步变更 ​

vue
<uvx-number-box
   v-model="value"
   :async-change="true"
   @change="handleAsyncChange"
></uvx-number-box>
uts
import type { ChangeDetail } from "@/uni_modules/uvx-ui/components/uvx-number-box/types/index.uts";

const value = ref<number>(1);

const handleAsyncChange = (detail: ChangeDetail): void => {
   // 请求完成后由业务更新绑定值。
   value.value = detail.value;
};

自定义外观 ​

vue
<uvx-number-box
   :model-value="1"
   :input-width="48"
   :button-size="36"
   color="#ffffff"
   bg-color="#2979ff"
   icon-style="font-size: 14px;"
></uvx-number-box>

自定义按钮 ​

vue
<uvx-number-box :model-value="1">
   <template #minus><uvx-icon name="minus" :size="12"></uvx-icon></template>
   <template #plus><uvx-icon name="plus" :size="12"></uvx-icon></template>
</uvx-number-box>

API ​

Props ​

属性说明类型默认值平台
model-value双向绑定值string | number0全部
name事件数据中的步进器标识string | number""全部
min最小值string | number1全部
max最大值string | numberNumber.MAX_SAFE_INTEGER全部
step每次加减步长string | number1全部
integer是否只允许整数booleanfalse全部
disabled是否禁用整个步进器booleanfalse全部
disabled-input是否只禁用输入框booleanfalse全部
async-change是否由外部异步更新绑定值booleanfalse全部
input-width输入框宽度string | number35全部
show-minus / show-plus是否显示减少/增加按钮booleantrue全部
decimal-length固定小数位数;null 不固定string | number | nullnull全部
long-press是否启用长按连续加减booleantrue全部
color输入文字和按钮图标颜色string""全部
button-size按钮宽高及输入框高度string | number30全部
bg-color可用按钮和输入框背景色string""全部
cursor-spacing输入框光标与键盘的距离string | number100全部
disable-plus / disable-minus是否单独禁用增加/减少按钮booleanfalse全部
icon-style默认加减图标样式,CSS 字符串string""全部
u-style根节点自定义样式,CSS 字符串string""全部
u-class追加到根节点的外部样式类string""全部

Events ​

事件说明参数平台
update:modelValue非异步模式数值变化时更新绑定值Value全部
input非异步模式数值变化时触发Value全部
change数值变化时触发ChangeDetail全部
focus输入框聚焦时触发FocusDetail全部
blur输入框失焦时触发,value 为失焦前原始文字BlurDetail全部
overlimit达到边界或按钮不可用时触发plus | minus全部
plus / minus有效增加/减少后触发-全部

Slots ​

名称说明平台
minus自定义减少按钮内容全部
input替换原生数值输入框全部
plus自定义增加按钮内容全部

ChangeDetail ​

字段说明类型
value格式化后的目标值string | number
name组件标识string | number

参考 ​

uvx-ui · uni-app x 组件库