Repository navigation
cn hx components FormatInput
github-actions[bot] edited this page Aug 26, 2026
·
4 revisions
格式化输入组件,支持数字、日期、时间和日期时间格式。由 HxInputBox(HxFormatInputDispatcher) 创建。继承所有 HxInputBox HOC props。
HxWithCheckFormatInput 添加验证功能(参见 WithCheck)。
// 无符号分组整数,最多 7 位
<HxFormatInput $model={form} $field="amount" format="@nugd7" />
// 有符号小数,5 位整数 + 2 位小数
<HxFormatInput $model={form} $field="price" format="@nd5f2" />
// 无符号、分组、固定 2 位小数
<HxFormatInput $model={form} $field="total" format="@nugd7f2x" />
// 日期:年/月/日 顺序
<HxFormatInput $model={form} $field="birthDate" format="@d/ymd" />
// 日期:月-日-年 顺序
<HxFormatInput $model={form} $field="eventDate" format="@d-mdy" />
// 日期时间(含秒)
<HxFormatInput $model={form} $field="createdAt" format="@d/ymd :hns" />
// 仅时间
<HxFormatInput $model={form} $field="startTime" format="@d:hns" />
// 受 min/max 约束的整数,补零至 2 位
<HxFormatInput $model={form} $field="hour" format="@iu23z" />
// 全负值域的整数
<HxFormatInput $model={form} $field="temp" format="@il-100u-10" />
// 为空时显示占位符
<HxFormatInput $model={form} $field="date" format="@d/ymd" datetimeCharPlaceholderOnEmpty />| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
format |
string |
— | 格式模式字符串(语法见下) |
forceUseEnFormat |
boolean |
false |
强制使用英文本地化的小数点/千分位分隔符 |
datetimeCharPlaceholderOnEmpty |
boolean |
false |
日期时间字段为空时显示 _ 占位符 |
外加所有 HxInputBox HOC props:$model、$field、placeholder、prefix、suffix、$disabled、$readonly。
模式:@n[ugd{N}f{N}[x]e]
| 标识 | 说明 |
|---|---|
u |
无符号——不允许负数 |
g |
分组——千分位分隔符 |
d{N} |
最大整数位数(如 d7) |
f{N} |
最大小数位数(如 f2) |
x |
固定小数位——精确 f{N} 位小数,不足补零 |
e |
强制英文本地化(同 forceUseEnFormat) |
示例:
-
@nugd7→ 无符号分组整数,最多 7 位 -
@nd5f2→ 有符号小数,5 位整数 + 2 位小数 -
@nugd7f2x→ 无符号,固定显示 2 位小数
模式:@i[l{low}][u{upper}][z]
纯整数的轻量模式——无符号规则、无分组、无小数。l / u 至少指定一个。
| 标识 | 说明 |
|---|---|
l{low} |
最低允许值,可为负数(l-5) |
u{upper} |
最高允许值,可为负数(u-10);缺省 = 无上限 |
z |
按 upper 的位数补零显示 |
行为说明:
- 负数输入由值域本身开启:
min < 0时(如@il-5u59)可输入前导负号。 - 单独的负
max(@iu-10)表示下限无界:值域为(-∞, -10]。 - 边界按字符串比较,任意量级的值都精确;超出
Number.MAX_SAFE_INTEGER的值在模型中保持字符串形式。
示例:
-
@iu23z→ 小时输入 0-23,补零至 2 位 -
@il-100u-10→ 全负值域 -
@iu-10→ 任意小于 -10 的值
模式:@d[/-ymd ][:hns]
@d 之后的字符序列定义显示顺序:
-
y= 年,m= 月,d= 日 -
h= 时,n= 分,s= 秒 - 分隔符:
/、-、:(时间部分)、(日期与时间之间空格)
示例:
-
@d/ymd→ 2024/12/31 -
@d-mdy→ 12-31-2024 -
@d/dmy :hns→ 31/12/2024 23:59:59 -
@d:hns→ 23:59:59(仅时间)
同 HxInput 的实用指引:onChange/onInput 可用但通常多余——值变更由 $model/$field 处理。onFocus/onBlur/onKeyDown 最为常用。
当 emitChangeOnBlur: false 且 emitChangeDelay 为正(默认 150ms)时,每次键入会静默更新模型,而变更事件在延迟后发出。若在延迟窗口内模型值被外部修改(如其他组件),延迟事件可能携带过期的 old/new 值,与实际模型不符。
- 显示不受影响:显示在渲染时由模型值派生,外部变化立即反映。
- 仅事件载荷可能过期,且仅在短暂的延迟窗口内;消费方应以模型为最终依据。
-
emitChangeOnBlur: true无此竞态 —— 事件在失焦时统一发出。
import { configHxFormatInput } from '@hx/components';
configHxFormatInput({ forceUseEnFormat: false });继承 AbstractHxFormatInputPatternKit 可创建自定义格式模式:
import { AbstractHxFormatInputPatternKit } from '@hx/components';
class MyKit extends AbstractHxFormatInputPatternKit {
parse(rawValue: string): ParsedValue { /* ... */ }
format(parsed: ParsedValue): string { /* ... */ }
}内置工具包:HxFormatInputNumberPatternKit、HxFormatInputIntegerPatternKit、HxFormatInputDateTimePatternKit。
- Overview
- Common Concepts
- I18n
- Data Attributes
- Form Components
- Layout Components
- Display Components
- Overlay Components
- Structure Components
- Validation
- Hooks
- Utilities