更新记录
1.0.2(2025-12-07) 下载此版本
适配鸿蒙样式
1.0.1(2025-12-07) 下载此版本
针对鸿蒙系统进行适配
1.0.0(2025-12-07) 下载此版本
appx-number-box 是一款基于 UTS 编写的跨端步进器组件,支持数值的增加 / 减少操作、手动输入,可自定义样式、禁用状态、数值范围等,适用于电商数量选择、表单数值调整等场景。
查看更多平台兼容性
uni-app x(4.87)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
appx-number-box 步进器组件帮助文档
组件介绍
appx-number-box 是一款基于UTS编写的跨端步进器组件,支持数值的增加/减少操作、手动输入,可自定义样式、禁用状态、数值范围等,适用于电商数量选择、表单数值调整等场景。
组件属性(Props)
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| modelValue | number | 1 | 组件绑定值,支持v-model双向绑定 |
| min | number | 0 | 数值最小值,低于该值时减少按钮禁用 |
| max | number | 9999 | 数值最大值,高于该值时增加按钮禁用 |
| step | number | 1 | 步长(每次点击增加/减少的数值),必须为正数,否则自动重置为1并给出警告 |
| disabled | boolean | false | 是否禁用整个组件(禁用后按钮和输入框均不可操作) |
| height | number/string | 36 | 组件整体高度(单位:px) |
| inputWidth | number/string | 60 | 输入框宽度(单位:px) |
| inputFontSize | number/string | 14 | 输入框字体大小(单位:px) |
| inputColor | string | #333333 | 输入框文字颜色(支持十六进制、RGB等格式) |
| borderRadius | number/string | 4 | 组件圆角值(单位:px) |
| customStyle | object/string | {} | 自定义组件样式,支持对象格式(如{background: '#f5f5f5'})或字符串格式(如'background:#f5f5f5;') |
| disableInput | boolean | false | 是否禁止手动输入(仅保留按钮操作) |
组件事件(Emits)
| 事件名 | 触发时机 | 回调参数 | 说明 |
|---|---|---|---|
| update:modelValue | 数值发生变化时(点击按钮/输入框输入) | val: number | v-model双向绑定的内置事件,返回最新的数值 |
| change | 点击增加/减少按钮导致数值变化时 | val: number | 返回最新的数值(输入框输入时不触发,失焦时触发blur事件) |
| blur | 输入框失焦时 | val: number | 返回格式化后的最终数值(会自动修正到min-max范围内) |
组件方法(内部逻辑)
数值格式化逻辑
组件内置formatValue方法,会自动处理以下场景:
- 非数字值(如输入字母)自动修正为
min值; - 数值超出
min/max范围时,自动修正为边界值; - 步长为非正数时,自动重置为1并在控制台输出警告。
核心交互逻辑
- 按钮操作:点击“+”/“-”按钮时,先判断组件是否禁用、数值是否超出边界,再按步长调整数值,最后触发
update:modelValue和change事件; - 输入框操作:输入过程中实时格式化数值并更新绑定值;失焦时再次格式化数值,确保符合范围限制,并触发
blur事件; - 值同步:监听
modelValue变化,实时同步到组件内部值并格式化,确保数值始终合法。
样式说明(Scoped)
| 类名 | 说明 |
|---|---|
| number-box-container | 组件外层容器,默认弹性布局、白色背景、灰色边框 |
| number-box-disabled | 组件禁用状态类,添加后透明度0.6且禁止指针事件 |
| number-box-btn | 按钮基础样式,固定宽度36px、弹性居中 |
| btn-disabled | 按钮禁用状态类,文字颜色变为#cccccc,光标变为not-allowed |
| number-box-minus | 减少按钮样式,右侧有灰色边框 |
| number-box-plus | 增加按钮样式,左侧有灰色边框 |
| btn-icon | 按钮内“+/-”图标样式,默认字体大小16px、颜色#666666 |
| number-box-input | 输入框样式,无边框、居中对齐、透明背景 |
使用示例
基础用法
<template>
<appx-number-box v-model="count" />
</template>
<script lang="uts" setup>
const count = ref(1);
</script>
自定义范围和步长
<template>
<appx-number-box
v-model="count"
:min="1"
:max="10"
:step="2"
/>
</template>
<script lang="uts" setup>
const count = ref(1);
</script>
自定义样式+禁用输入
<template>
<appx-number-box
v-model="count"
:height="40"
:borderRadius="8"
inputColor="#0088ff"
:disableInput="true"
:customStyle="{ background: '#f8f8f8', borderColor: '#ddd' }"
@change="handleChange"
@blur="handleBlur"
/>
</template>
<script lang="uts" setup>
const count = ref(1);
const handleChange = (val) => {
console.log('数值变化:', val);
};
const handleBlur = (val) => {
console.log('输入框失焦,最终值:', val);
};
</script>
禁用组件
<template>
<appx-number-box v-model="count" :disabled="true" />
</template>
<script lang="uts" setup>
const count = ref(5);
</script>
注意事项
step属性必须为正数,否则组件会自动重置为1并在控制台输出警告;- 手动输入非数字内容时,失焦后会自动修正为
min值; customStyle优先级高于组件默认样式,可覆盖背景、边框等样式;- 组件支持跨端使用(基于UTS),样式已做自适应处理,无需额外适配基础布局。

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 5
赞赏 0
下载 11846710
赞赏 1818
赞赏
京公网安备:11010802035340号