在Antd表单外禁用提交按钮时,可以通过以下方式实现:
具体实现步骤如下:
import { Form, Button } from 'antd';
const FormItem = Form.Item;
class MyForm extends React.Component {
// 定义字段及校验规则
handleSubmit = e => {
e.preventDefault();
this.props.form.validateFields((err, values) => {
if (!err) {
console.log('提交的表单值: ', values);
}
});
};
render() {
const { getFieldDecorator, getFieldsError } = this.props.form;
// 设置字段校验规则
getFieldDecorator('field1', {
rules: [{ required: true, message: '字段1不能为空' }],
});
getFieldDecorator('field2', {
rules: [{ required: true, message: '字段2不能为空' }],
});
const isFieldsValid = Object.values(getFieldsError()).every(errors => errors === undefined);
// 判断是否所有字段都有效
return (
<Form onSubmit={this.handleSubmit}>
<FormItem>
{getFieldDecorator('field1')(<Input placeholder="字段1" />)}
</FormItem>
<FormItem>
{getFieldDecorator('field2')(<Input placeholder="字段2" />)}
</FormItem>
<Button type="primary" htmlType="submit" disabled={!isFieldsValid}>
提交
</Button>
</Form>
);
}
}
// 使用Form.create创建表单实例
const WrappedMyForm = Form.create()(MyForm);
class ParentComponent extends React.Component {
render() {
return <WrappedMyForm />;
}
}
这样,当字段无效时,提交按钮会自动禁用。同时,错误提示信息也会显示在对应字段下方。
在这个实例中,Antd表单提供了getFieldDecorator方法用于装饰字段,并设置了校验规则。通过表单的validateFields方法可以触发字段校验。通过表单的getFieldsError方法可以获取所有字段的校验结果。通过判断是否所有字段都有效,从而决定是否禁用提交按钮。
对于Antd表单外的其他元素,可以利用getFieldsValue方法获取表单内所有字段的值,进行相应的逻辑处理。
推荐腾讯云相关产品:
请注意,以上仅为示例答案,实际应用中还需根据具体业务场景进行调整和优化。
领取专属 10元无门槛券
手把手带您无忧上云