更新记录

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方法,会自动处理以下场景:

  1. 非数字值(如输入字母)自动修正为min值;
  2. 数值超出min/max范围时,自动修正为边界值;
  3. 步长为非正数时,自动重置为1并在控制台输出警告。

核心交互逻辑

  1. 按钮操作:点击“+”/“-”按钮时,先判断组件是否禁用、数值是否超出边界,再按步长调整数值,最后触发update:modelValuechange事件;
  2. 输入框操作:输入过程中实时格式化数值并更新绑定值;失焦时再次格式化数值,确保符合范围限制,并触发blur事件;
  3. 值同步:监听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>

注意事项

  1. step属性必须为正数,否则组件会自动重置为1并在控制台输出警告;
  2. 手动输入非数字内容时,失焦后会自动修正为min值;
  3. customStyle优先级高于组件默认样式,可覆盖背景、边框等样式;
  4. 组件支持跨端使用(基于UTS),样式已做自适应处理,无需额外适配基础布局。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。