只允许输入数字. 原生type="number"的input存在一些局限性. 它接受的输入可能不一定是合法的数字. 如0000e123
NumberInput组件解决了这些问题. 它只接受常规的数字表示法, 不接受科学计数法等其它表示法
NumberInput组件基于TextInput构建, 因此继承了TextInput的属性
默认情况下可以输入任意合法的数字. 包括负数, 任意小数, 整数等.
这对于输入银行卡号等场景尤其有用.
tip: 此时移动端会显示系统数字键盘.
这对于输入付款金额等场景尤其有用.
tip: 此时移动端会显示带小数点的系统数字键盘.
prefix和suffix属性可以设置自动显示的前缀和后缀.
decimalScale属性用于设置最大的小数位数.
下面的例子最大只能有两位小数.
isAllowed属性是一个方法, 用于自定义输入的验证逻辑. 它接受一个values对象参数. 如果函数的返回值为false, onChange方法不会触发, 并且输入值不会改变.
values参数的类型是NumberFormatValues, 它的类型定义:
interface NumberFormatValues {
// 解析后的数值, 如果是不可转换为数字会是undefined
floatValue: number | undefined;
// 格式化后的值
formattedValue: string;
// 用户输入的值
value: string;
}
thousandsGroupStyle属性可以设置为自动分位显示, 支持的分位模式:
以下的例子使用国际通用的千分位显示和中国的万分位显示
tip: 如果是一个较小的范围, 可以考虑使用
Slider组件替代.
min和max属性控制着输入范围. step属性控制键盘上/下箭头快捷键的增加/减少的步长
clampBehavior属性控制着当输入超出范围时的夹紧行为. 取值:
"strict" 严格模式, 意味着不可能输入超出范围的值.
注意: 在"strict"模式下, min必须小于等于0, 否则会导致问题.
"blur" 会在输入框失去焦点时夹紧, 这是默认模式. 此模式下对min没有特殊要求.
"none" 不执行夹紧行为, 只有通过键盘快捷键增加/减少才会被限制在范围内.