Skip to content

NumberInput 数字输入框

用于录入数字的文本框,内置了长按加减按钮连续滚动的逻辑,并支持最大值、最小值、精度步长调整。

预览

Preview

安装

pnpm dlx brutx-vue@latest add number-input

用法

vue
<script setup>
import { ref } from 'vue'
import { NumberInput } from 'brutx-ui-vue'

const count = ref(5)
</script>

<template>
    <NumberInput v-model="count" :min="0" :max="10" :step="1" />
</template>

变体

NumberInput 提供两种按钮排版形态,通过 layout 属性配置:

布局属性排版说明
split (默认)双侧分立式:减号按钮在输入框左侧,加号按钮在右侧,极具粗野对称感。
stacked右侧堆叠式:加减上下按钮成组排列在右边。
vue
<template>
    <!-- 分立式 -->
    <NumberInput v-model="count" layout="split" />

    <!-- 堆叠式 -->
    <NumberInput v-model="count" layout="stacked" />
</template>

边框样式变体

通过 variant 属性设置不同的边框样式,用于表单验证状态反馈:

变体说明
default标准边框
error错误边框,聚焦时使用危险色阴影
success成功边框,聚焦时使用成功色阴影
vue
<template>
    <NumberInput v-model="count" variant="default" />
    <NumberInput v-model="count" variant="error" />
    <NumberInput v-model="count" variant="success" />
</template>

Props

属性类型默认值说明
modelValuenumber | null当前输入值
defaultValuenumber未受控时的默认值
minnumber允许的最小值
maxnumber允许的最大值
stepnumber1每次微调的增减幅度
stepSnappingbooleantrue是否启用步进对齐,为 false 时值不会自动吸附到 step 的倍数
focusOnChangebooleanfalse值变化时是否自动聚焦输入框
formatOptionsIntl.NumberFormatOptions数字格式化选项,影响显示与允许输入的字符
localestring格式化与货币使用的区域设置
layout'split' | 'stacked''split'调整按钮的布局结构
variant'default' | 'error' | 'success''default'边框样式变体
errorMessagestring错误消息文本,仅在 variant="error" 时显示
placeholderstringundefined占位符,未设置时使用国际化默认值
disabledbooleanfalse是否禁用输入框及按钮
readonlybooleanfalse是否只读
disableWheelChangebooleanfalse是否禁止鼠标滚轮改变值
invertWheelChangebooleanfalse是否反转滚轮滚动方向
namestring表单字段名称,随表单一起提交
requiredbooleanfalse是否为必填字段
idstring元素的 id 属性
iconSize'xs' | 'sm' | 'default' | 'lg' | 'xl' | '2xl''default'加减按钮图标的尺寸
asstring | Component'div'根元素渲染为的标签或组件
asChildbooleanfalse是否启用组合模式,不渲染自身 DOM,将 props 传递给子元素
classstringundefined容器的自定义 CSS 类

事件

事件参数说明
update:modelValue(val: number)输入值变化时触发

可访问性

  • 键盘操作:输入框支持 Tab 键聚焦,加减按钮支持 Enter/Space 键触发,支持方向键 Up/Down 微调数值
  • ARIA 属性:加减按钮自动设置 aria-label(如"增加"/"减少"),输入框设置 aria-valueminaria-valuemaxaria-valuenow 属性
  • 表单集成:支持 namerequireddisabledreadonly 等原生表单属性,与表单验证兼容
  • 焦点管理focusOnChange 属性控制值变化时是否自动聚焦,disabled 状态下禁止所有交互

蛮力铸就。