ant-design/components/input-number/index.zh-CN.md

5.8 KiB
Raw Permalink Blame History

category group title subtitle description cover coverDark demo
Components 数据录入 InputNumber 数字输入框 通过鼠标或键盘,输入范围内的数值。 https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*JvWbSYhuNlIAAAAAAAAAAAAADrJ8AQ/original https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*1uH-R5kLAMIAAAAAAAAAAAAADrJ8AQ/original
cols
2

何时使用

当需要获取标准数值时。

代码演示

基本 三种大小 前置/后置标签 不可用 高精度小数 格式化展示 键盘行为 鼠标滚轮 形态变体 Filled Debug 超出边界 前缀/后缀 自定义状态 聚焦 图标按钮 _InternalPanelDoNotUseOrYouWillBeFired 覆盖组件样式

API

通用属性参考:通用属性

参数 说明 类型 默认值 版本
addonAfter 带标签的 input设置后置标签 ReactNode - 4.17.0
addonBefore 带标签的 input设置前置标签 ReactNode - 4.17.0
autoFocus 自动获取焦点 boolean false -
changeOnBlur 是否在失去焦点时,触发 onChange 事件(例如值超出范围时,重新限制回范围并触发事件) boolean true 5.11.0
changeOnWheel 允许鼠标滚轮改变数值 boolean - 5.14.0
controls 是否显示增减按钮,也可设置自定义箭头图标 boolean | { upIcon?: React.ReactNode; downIcon?: React.ReactNode; } - 4.19.0
decimalSeparator 小数点 string - -
placeholder 占位符 string -
defaultValue 初始值 number - -
disabled 禁用 boolean false -
formatter 指定输入框展示值的格式 function(value: number | string, info: { userTyping: boolean, input: string }): string - info: 4.17.0
keyboard 是否启用键盘快捷行为 boolean true 4.12.0
max 最大值 number Number.MAX_SAFE_INTEGER -
min 最小值 number Number.MIN_SAFE_INTEGER -
parser 指定从 formatter 里转换回数字的方式,和 formatter 搭配使用 function(string): number - -
precision 数值精度,配置 formatter 时会以 formatter 为准 number - -
readOnly 只读 boolean false -
status 设置校验状态 'error' | 'warning' - 4.19.0
prefix 带有前缀图标的 input ReactNode - 4.17.0
suffix 带有后缀图标的 input ReactNode - 5.20.0
size 输入框大小 large | middle | small - -
step 每次改变步数,可以为小数 number | string 1 -
stringMode 字符值模式,开启后支持高精度小数。同时 onChange 将返回 string 类型 boolean false 4.13.0
value 当前值 number - -
variant 形态变体 outlined | borderless | filled outlined 5.13.0
onChange 变化回调 function(value: number | string | null) - -
onPressEnter 按下回车的回调 function(e) - -
onStep 点击上下箭头的回调 (value: number, info: { offset: number, type: 'up' | 'down' }) => void - 4.7.0

Ref

名称 说明 参数 版本
blur() 移除焦点 -
focus() 获取焦点 (option?: { preventScroll?: boolean, cursor?: 'start' | 'end' | 'all' }) cursor - 5.22.0
nativeElement 获取原生 DOM 元素 - 5.17.3

主题变量Design Token

FAQ

为何受控模式下,value 可以超出 minmax 范围?

在受控模式下,开发者可能自行存储相关数据。如果组件将数据约束回范围内,会导致展示数据与实际存储数据不一致的情况。这使得一些如表单场景存在潜在的数据问题。

为何动态修改 minmaxvalue 超出范围不会触发 onChange 事件?

onChange 事件为用户触发事件,自行触发会导致表单库误以为变更来自用户操作。我们以错误样式展示超出范围的数值。

为何 onBlur 等事件获取不到正确的 value

InputNumber 的值由内部逻辑封装而成,通过 onBlur 等事件获取的 event.target.value 仅为 DOM 元素的 value 而非 InputNumber 的实际值。例如通过 formatter 或者 decimalSeparator 更改展示格式DOM 中得到的就是格式化后的字符串。你总是应该通过 onChange 获取当前值。

为何 changeOnWheel 无法控制鼠标滚轮是否改变数值?

不建议使用 type 属性

InputNumber 组件允许你使用 input 元素的所有属性最终透传至 input 元素,当你传入 type="number" 时 input 元素也会添加这个属性,这会使 input 元素触发原生特性(允许鼠标滚轮改变数值),从而导致 changeOnWheel 无法控制鼠标滚轮是否改变数值。