For AI agents: the complete documentation index is available at https://ifhover.github.io/leaf-ui/v/0.6.0/llms.txt, the full documentation bundle is available at https://ifhover.github.io/leaf-ui/v/0.6.0/llms-full.txt, and this page is available as Markdown at https://ifhover.github.io/leaf-ui/v/0.6.0/components/input-number.md.
  • 简体中文
  • InputNumber 数字输入框

    输入数量、金额等数字内容。

    基础用法

    当前数量:3
    basic.tsx
    import { Form, FormField, InputNumber, Text } from '@ifhover/leaf-ui';
    
    import { useState } from 'react';
    
    export function InputNumberBasic() {
      const [value, setValue] = useState<number | null>(3);
      return (
        <Form layout="vertical">
          <FormField label="数量">
            <InputNumber name="quantity" min={0} max={20} value={value} onChange={setValue} />
          </FormField>
          <FormField label="金额">
            <InputNumber min={0} step={0.1} precision={2} defaultValue={19.9} prefix="¥" />
          </FormField>
          <FormField label="百分比">
            <InputNumber defaultValue={50} min={0} max={100} suffix="%" controls={false} />
          </FormField>
          <FormField label="只读">
            <InputNumber defaultValue={12} readOnly />
          </FormField>
          <FormField label="禁用">
            <InputNumber defaultValue={8} disabled />
          </FormField>
          <Text tone="muted">当前数量:{value ?? '未填写'}</Text>
        </Form>
      );
    }
    

    格式化与高精度

    capabilities.tsx
    import { Form, FormField, InputNumber } from '@ifhover/leaf-ui';
    
    export function Capabilities() {
      return (
        <Form layout="vertical">
          <FormField label={'金额与千分位'}>
            <InputNumber defaultValue={12345.67} precision={2} grouping prefix="$" />
          </FormField>
          <FormField label={'高精度十进制字符串'}>
            <InputNumber
              stringMode
              name="amount"
              defaultValue="9007199254740993.01"
              step="0.01"
              precision={2}
            />
          </FormField>
          <FormField label={'自定义百分比显示'}>
            <InputNumber
              defaultValue={15}
              min={0}
              max={100}
              formatter={(value) => (value == null ? '' : `${value}%`)}
              parser={(text) => text.replace('%', '')}
            />
          </FormField>
        </Form>
      );
    }
    

    InputNumber API

    属性类型默认值说明
    valuenumber | null | string | nullnull受控值 / 初始值,空值为 null
    defaultValuenumber | null | string | nullnull受控值 / 初始值,空值为 null
    onChange((value: number | null) => void) | ((value: string | null) => void)—有效数字变化或清空时触发
    minnumber | string无限制可输入数字的范围
    maxnumber | string无限制可输入数字的范围
    stepnumber | string1增减步长
    precisionnumber—小数精度,范围 0–15
    controlsbooleantrue展示增减按钮
    keyboardbooleantrue支持上下方向键增减
    size'sm' | 'md' | 'lg''md'控件尺寸
    status'error' | 'warning'—校验状态
    prefixReactNode—前后装饰内容
    suffixReactNode—前后装饰内容
    stringModefalse | true—使用字符串处理高精度数值、步长和边界。
    formatter( value: number | string | null, info: { userTyping: boolean; input: string }, ) => string—格式化显示文字,不改变表单的原始值。
    parser(text: string) => number | string—把显示文字还原为数值。
    groupingboolean—启用本地化数字分组。
    localestring—语言或数字格式的区域标识。
    disabledbooleanfalse禁用交互。
    readOnlybooleanfalse锁定业务值,禁止输入、选择、清除和删除。
    refRef<HTMLInputElement>—输入框引用

    类型

    定义组件属性或组装列表时可导入相关类型。

    import type { InputNumberProps } from '@ifhover/leaf-ui';

    使用说明

    输入中的负号或小数点会暂时保留。失焦或回车时校正范围和精度;增减操作避免常见的小数累加误差。设置 name 可通过 FormData 提交,required、form、autoComplete 等属性传给输入元素,并支持表单 reset。className 与 style 作用于外层容器。

    NumericInputNumber API

    属性类型默认值说明
    valuenumber | null—受控值。
    defaultValuenumber | nullnull初始值;非受控模式支持表单重置。
    onChange(value: number | null) => void—值发生变化时调用。
    minnumber—允许的最小值。
    maxnumber—允许的最大值。
    stepnumber1步长;Slider 设为 null 时仅选择刻度值。
    precisionnumber—小数位数。
    controlsbooleantrue设置 controls。
    keyboardbooleantrue设置 keyboard。
    size'sm' | 'md' | 'lg''md'展示尺寸。
    status'error' | 'warning'—设置 status。
    prefixReactNode—前置内容。
    suffixReactNode—后置内容。
    stringModefalse—使用字符串处理高精度数值、步长和边界。
    formatter( value: number | string | null, info: { userTyping: boolean; input: string }, ) => string—格式化显示文字,不改变表单的原始值。
    parser(text: string) => number | string—把显示文字还原为数值。
    groupingboolean—启用本地化数字分组。
    localestring—语言或数字格式的区域标识。

    StringInputNumber API

    属性类型默认值说明
    precisionnumber—小数位数。
    controlsbooleantrue设置 controls。
    keyboardbooleantrue设置 keyboard。
    size'sm' | 'md' | 'lg''md'展示尺寸。
    status'error' | 'warning'—设置 status。
    prefixReactNode—前置内容。
    suffixReactNode—后置内容。
    formatter( value: number | string | null, info: { userTyping: boolean; input: string }, ) => string—格式化显示文字,不改变表单的原始值。
    parser(text: string) => number | string—把显示文字还原为数值。
    groupingboolean—启用本地化数字分组。
    localestring—语言或数字格式的区域标识。
    stringModetrue—必需。使用字符串处理高精度数值、步长和边界。
    valuestring | null—受控值。
    defaultValuestring | nullnull初始值;非受控模式支持表单重置。
    onChange(value: string | null) => void—值发生变化时调用。
    minstring—允许的最小值。
    maxstring—允许的最大值。
    stepstring'1'步长;Slider 设为 null 时仅选择刻度值。