为了确保用户在输入框中只能输入1到99之间的正整数,且不能输入小数,你可以结合HTML属性、表单验证以及自定义事件处理。你已经在Form.Item
中使用了Ant Design的表单组件,这里有一个示例来帮助你实现这个需求:
使用 Ant Design 进行输入限制
以下是一个调整后的代码示例,通过组合 Input
的 type="number"
和验证规则,实现只允许正整数的输入。
<Form.Item
validateTrigger="onBlur"
layout="vertical"
label="每人每间夜可下单上限:"
name="peopleRoomLimit"
rules={[
{ required: true, message: '请输入每人每间夜可下单上限' },
{
validator: async (_, value) => {
if (!value || (value >= 1 && value <= 99 && Number.isInteger(Number(value)))) {
return Promise.resolve();
}
return Promise.reject(new Error('请输入1~99之间的整数'));
},
},
]}
labelCol={{ span: 24 }}
wrapperCol={{ span: 24 }}
>
<Input
className="header-left-input"
type="number"
min={1}
max={99}
step={1}
placeholder="请输入1~99之间的整数"
onKeyPress={(e) => {
// 防止输入小数点和负号
if (e.key === '.' || e.key === '-' || !/[0-9]/.test(e.key)) {
e.preventDefault();
}
}}
/>
</Form.Item>
解释代码中的关键部分:
validator
函数:- 在验证函数中,检查
value
是否存在,并且确保它在范围[1, 99]
内,并且是一个整数 (Number.isInteger
)。 - 如果通过验证,则返回
Promise.resolve()
;否则返回带有错误信息的Promise.reject()
。
- 在验证函数中,检查
onKeyPress
事件:- 限制用户键盘输入,防止他们输入小数点(
.
)或负号(-
),并只允许数字字符。这样能够提高用户体验,同时减少不必要的错误。
- 限制用户键盘输入,防止他们输入小数点(
HTML 属性:
- 使用了
min
,max
, 和step=1
属性来设置允许的值范围和步长,尽管前端检查会更有效,但这些属性也提供了一定程度的约束。
- 使用了
这样的设置能更好地保证用户只能输入符合条件的数据,有效避免非整数和无效数据。希望这对你有所帮助!
内容由零声教学AI助手提供,问题来源于学员提问