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>

API 参考 ​

NumberInput — 属性
名称类型默认值说明
layout
"stacked" | "split" | undefined
"split"
设置加减按钮相对输入框的布局方式。
详情

声明类型

"stacked" | "split" | undefined

字面量

  • "split"
  • "stacked"

默认值详情

解析值
"split"

来源

NumberInput.vue:21

packages/ui/src/components/number-input/NumberInput.vue

variant
"default" | "success" | "error" | undefined
"default"
设置默认、成功或错误边框状态。
详情

声明类型

"default" | "success" | "error" | undefined

字面量

  • "default"
  • "error"
  • "success"

默认值详情

解析值
"default"

来源

NumberInput.vue:22

packages/ui/src/components/number-input/NumberInput.vue

errorMessage
string | undefined
undefined
错误变体下显示并关联到输入控件的错误说明。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

NumberInput.vue:23

packages/ui/src/components/number-input/NumberInput.vue

placeholder
string | undefined
undefined
输入值为空时显示的占位文本;未提供时使用当前语言的默认文案。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

NumberInput.vue:24

packages/ui/src/components/number-input/NumberInput.vue

class
string | undefined
undefined
追加到数字输入组件容器的自定义 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

NumberInput.vue:25

packages/ui/src/components/number-input/NumberInput.vue

iconSize
IconSize | undefined
"md"
设置加号和减号图标的尺寸。
详情

声明类型

IconSize | undefined

字面量

  • "2xl"
  • "lg"
  • "md"
  • "sm"
  • "xl"
  • "xs"

关联类型

IconSize
类型定义 — IconSize
export type IconSize = NonNullable<VariantProps<typeof iconSizeVariants>['size']>

默认值详情

解析值
"md"

来源

NumberInput.vue:26

packages/ui/src/components/number-input/NumberInput.vue

sound
boolean | undefined
false
启用步进操作时由 Web Audio 合成的点击音效。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

NumberInput.vue:28

packages/ui/src/components/number-input/NumberInput.vue

defaultValue
number | undefined
—
非受控模式下组件首次使用的数字值。
详情

声明类型

number | undefined

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

modelValue
可空
number | null | undefined
—
当前受控数值;null 表示空值,可通过 v-model 绑定。
详情

声明类型

number | null | undefined

字面量

  • null

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

min
number | undefined
—
允许输入的最小数值,并限制向下调整的范围。
详情

声明类型

number | undefined

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

max
number | undefined
—
允许输入的最大数值,并限制向上调整的范围。
详情

声明类型

number | undefined

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

step
number | undefined
—
每次点击加减按钮时调整的数值幅度。
详情

声明类型

number | undefined

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

stepSnapping
boolean | undefined
—
是否将输入值对齐到 step 的整数倍。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

focusOnChange
boolean | undefined
—
值因步进操作变化后是否自动聚焦输入框。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

formatOptions
Intl.NumberFormatOptions | undefined
—
传递给 Intl.NumberFormat 的格式选项,用于数值显示与本地化输入解析。
详情

声明类型

Intl.NumberFormatOptions | undefined

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

locale
string | undefined
—
指定数字格式化和输入解析所用的区域设置。
详情

声明类型

string | undefined

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

disabled
boolean | undefined
—
禁用输入框和加减按钮。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

readonly
boolean | undefined
—
禁止直接编辑数值,但不等同于禁用组件。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

disableWheelChange
boolean | undefined
—
阻止鼠标滚轮改变当前数值。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

invertWheelChange
boolean | undefined
—
反转鼠标滚轮方向与数值增减方向的对应关系。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

id
string | undefined
—
传递给内部输入控件的 DOM id。
详情

声明类型

string | undefined

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

asChild
boolean | undefined
—
启用组合模式,将组件属性和行为合并到唯一子元素。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

as
AsTag | Component | undefined
—
指定根元素渲染使用的标签或 Vue 组件。
详情

声明类型

AsTag | Component | undefined

字面量

  • "a"
  • "button"
  • "div"
  • "form"
  • "h2"
  • "h3"
  • "img"
  • "input"
  • "label"
  • "li"
  • "nav"
  • "ol"
  • "p"
  • "span"
  • "svg"
  • "template"
  • "ul"

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

name
string | undefined
—
内部表单控件的字段名称,用于表单提交。
详情

声明类型

string | undefined

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

required
boolean | undefined
—
将内部输入控件标记为必填字段。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

未声明默认值
—

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

NumberInput — 事件
名称签名或类型说明
@update:modelValue
[val: number]
用户输入或步进调整产生新数值时发出,用于更新 v-model。
详情

声明类型

[val: number]

来源

NumberInput.vue

packages/ui/src/components/number-input/NumberInput.vue

可访问性 ​

  • 键盘操作:输入框支持 Tab 键聚焦,加减按钮支持 Enter/Space 键触发,支持方向键 Up/Down 微调数值
  • ARIA 属性:加减按钮自动设置 aria-label(如"增加"/"减少"),输入框设置 aria-valuemin、aria-valuemax、aria-valuenow 属性
  • 表单集成:支持 name、required、disabled、readonly 等原生表单属性,与表单验证兼容
  • 焦点管理:focusOnChange 属性控制值变化时是否自动聚焦,disabled 状态下禁止所有交互
  • 动效与音效降级:数值变化触发的 Drum Ticker 滚轮微动效在 prefers-reduced-motion 下自动停用;sound 音效遵循浏览器自动播放策略,未交互前不发声

蛮力铸就。