Reka UI logoReka
backdrop
组件

数字输入框

数字输入框允许用户输入数字,并通过步进按钮增加或减少其值。

特性

  • 完整的键盘导航。
  • 受控或非受控。
  • 支持按钮长按和滚轮事件。
  • 支持不同区域设置的数字系统。
  • 可自定义的格式。

安装

安装数字包。

sh
$ npm add @internationalized/number

从命令行安装此组件。

sh
$ npm add reka-ui

结构

导入所有部分并将其组合。

vue
<script setup>
import { NumberFieldDecrement, NumberFieldIncrement, NumberFieldInput, NumberFieldRoot } from 'reka-ui'
</script>

<template>
  <NumberFieldRoot>
    <NumberFieldDecrement />
    <NumberFieldInput />
    <NumberFieldIncrement />
  </NumberFieldRoot>
</template>

API 参考

包含数字输入框的所有部分。当在 form 中使用时,也会渲染一个 input 以确保事件正确传播。

属性默认类型
as
'div'
AsTag | Component

此组件应渲染为的元素或组件。可通过 asChild 覆盖。

asChild
布尔值

更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。

阅读我们的 组合指南了解更多详情。

defaultValue
数字
disabled
布尔值

当为 true 时,阻止用户与数字输入框交互。

disableWheelChange
布尔值

当为 true 时,阻止值在滚轮滚动时改变。

formatOptions
NumberFormatOptions

数字输入框中显示值的格式化选项。这也影响用户可以输入的字符。

id
string

元素的 ID

invertWheelChange
布尔值

当为 true 时,反转滚轮改变的方向。

locale
string

用于日期格式化的区域设置

max
数字

输入允许的最大值。

min
数字

输入允许的最小值。

modelValue
number | null
name
string

字段的名称。随其所属的表单一起作为名称/值对提交。

readonly
布尔值

当为 true 时,数字输入框为只读。

required
布尔值

当为 true 时,表示用户必须在所属表单提交前设置值。

step
1
数字

输入值每次增加或减少“步长”的量。

stepSnapping
true
布尔值

当为 false 时,阻止值吸附到步长的最近增量。

事件触发载荷
update:modelValue
[val: number]

值改变时调用的事件处理程序。

插槽(默认)载荷
modelValue
number | undefined
textValue
string
数据属性
[data-disabled]禁用时存在

输入框

输入框

根据值和格式选项渲染文本值的输入组件。

属性默认类型
as
'input'
AsTag | Component

此组件应渲染为的元素或组件。可通过 asChild 覆盖。

asChild
布尔值

更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。

阅读我们的 组合指南了解更多详情。

数据属性
[data-disabled]禁用时存在

增加

增加值的按钮。

属性默认类型
as
'button'
AsTag | Component

此组件应渲染为的元素或组件。可通过 asChild 覆盖。

asChild
布尔值

更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。

阅读我们的 组合指南了解更多详情。

disabled
布尔值
数据属性
[data-pressed]按下时存在
[data-disabled]禁用时存在

减少

减少值的按钮。

属性默认类型
as
'button'
AsTag | Component

此组件应渲染为的元素或组件。可通过 asChild 覆盖。

asChild
布尔值

更改默认渲染元素为作为子项传递的元素,合并它们的属性和行为。

阅读我们的 组合指南了解更多详情。

disabled
布尔值
数据属性
[data-pressed]按下时存在
[data-disabled]禁用时存在

示例

小数

支持 Intl.NumberFormat 支持的所有选项,包括最小和最大小数位数、符号显示、分组分隔符等配置。

vue
<template>
  <NumberFieldRoot
    :default-value="5"
    :format-options="{
      signDisplay: 'exceptZero',
      minimumFractionDigits: 1,
    }"
  >

  </NumberFieldRoot>
</template>

百分比

您可以将 formatOptions.style 设置为 percent 以将值视为百分比。在此模式下,您需要手动将步长设置为 0.01 以允许适当的步进大小。

vue
<template>
  <NumberFieldRoot
    :default-value="0.05"
    :step="0.01"
    :format-options="{
      style: 'percent',
    }"
  >

  </NumberFieldRoot>
</template>

货币

您可以将 formatOptions.style 设置为 currency 以将值视为货币值。还必须传入 currency 选项以设置货币代码(例如,USD)。

如果您需要允许用户更改货币,应在数字输入框旁边包含一个单独的下拉菜单。数字输入框本身不会从用户输入中确定货币。

vue
<template>
  <NumberFieldRoot
    :default-value="5"
    :format-options="{
      style: 'currency',
      currency: 'EUR',
      currencyDisplay: 'code',
      currencySign: 'accounting',
    }"
  >

  </NumberFieldRoot>
</template>

无障碍性

遵循 Spinbutton WAI-ARIA 设计模式

键盘交互

描述
向上箭头
增加值
向下箭头
减少值
Page Up
按10倍比例增加值
Page Down
按10倍比例减少值
Home
将值设置为最小值(如果提供了 min
End
将值设置为最大值(如果提供了 max