我知道type=number可以工作,但这不是我想要的。我的HTML:
<FormItem style={{ display: "inline-block" }}>
{getFieldDecorator('matchPercentage', {
initialValue: this.state.matchPercentage
})(
<Input type="number" value={this.state.matchPercentage} onChange={this.handlePercentMatch} style={{ width: 100, marginLeft: 10 }} />
)}
</FormItem>
我的职务:
handlePercentMatch = (e) => {
const isInteger = /^[0-9]+$/;
if (e.target.value === '' || isInteger.test(e.target.value)) {
this.setState({ matchPercentage: e.target.value })
}
}
我的isInteger.test()
正在工作,这意味着我只能在matchPercentage
中获得状态中的整数。但问题是它没有反映在GUI中。我仍然能够键入字母表,即使它们没有被设置为状态。
我知道type=“number”可以工作,但这不是我想要的。我想要使用react进行验证,因为我想要控制小数和最多多少位数,并且非负
我在这里添加了代码https://codepen.io/DadyByte/pen/xYgLvy?editors=1010
我找到了根本原因。如果使用FormItem
,则无论如何都允许键入。如果在FormItem之外使用Input
,则代码仍在运行。如何防止此问题
7条答案
按热度按时间o7jaxewo1#
Ant Design有一个InputNumber组件。您可以使用类似下面的内容
用途
则handleAgeChange函数可能如下所示
9cbw7uwe2#
根据www.example.com,最简单且远不复杂的方法www.w3schools.com:
在渲染输入时:
重要事项:不要使type=“number”,它不会起作用。
1cosmwyk3#
我想你是用它来输入电话号码的。
这是你可以使用的输入。
xeufq47z4#
HTML 5有一个本地解决方案:
第一个月
这是假设您的
Input
组件使用HTML5<input />
标记66bbxpm55#
只要使用下面的代码,它只会接受数字,也适用于Ant Design输入组件。
yqkkidmi6#
很简单,只需将type = number传递到输入字段
<input value={this.state.matchPercentage} onChange={this.handlePercentMatch} type="number">
eh57zj3b7#
嗨@爸爸字节,
设置模式属性以防止用户在输入字段中输入非整数值。
表达式
\d*
匹配任意位数(0或更多)。这将只允许在输入字段中输入整数值。或者,您也可以使用
/^[0-9]+$/
。