javascript - 尝试不对禁用字段进行验证
问题描述
我正在使用反应最终表单验证来验证表单。有一个要求,我需要禁用基于另一个字段(复选框)的某些字段的验证,但是在提交表单时我没有这样做。显示验证错误。下面是我进行表单验证的代码
render={({ handleSubmit, form, submitting, pristine, values }) => {
const formFields = fieldDefs.map(
({
name,
title,
drawer: {
component: Component,
validate,
isFieldWrapperComponent,
fieldInstructionNote,
options,
renderOption,
checkIsDisabled,
checkIsHidden,
...props
}
}) => {
const { isDisabled, updateValues } = checkIsDisabled?.(values) ?? {};
if (updateValues?.length) {
updateValues.forEach((params) => form.mutators.setValueMutator(...params));
}
return (
<Row key={name} gutter={8} style={{ paddingBottom: '8px' }}>
{(
<>
<Col span={6}>
<Text strong>{title}</Text>{' '}
{validate && <span style={{ color: 'red' }}>*</span>}
</Col>
<Col span={2} />
<Col span={16}>
<Field
name={`draftLibraryData.${name}`}
component={Component}
validate={isValidate(isDisabled, validate)}
options={options}
render={renderOption}
disabled={isDisabled}
{...props}
/>
</Col>
</>
)}
</Row>
);
}
);
return (
<Drawer
title={state.drawerTitle}
placement="right"
closable={submitting || pristine}
maskClosable={submitting || pristine}
visible={state.isDrawerVisible}
width={897}
>
<form onSubmit={handleSubmit}>
<p>
<span style={{ color: 'red' }}> * Indicates a required field </span>
</p>
{formFields}
<SectionActionBar
handleDiscard={() => resetValidationState(form, values, fieldDefs)}
isModified={!(submitting || pristine) || isTempDataModified(values)}
isFloatingAlert={false}
form={form}
/>
<FormState height="300px" overflowY="auto" border="1px solid black" />
</form>
</Drawer>
);
)}
然后这是函数isValidate.
export const isValidate = (isDisabled, validate) => {
return isDisabled ? undefined : validate;
};
当我提交表格时,我遇到了问题;验证正在触发具有isDisabled
true 的字段。谁能指出我正确的方向?
解决方案
推荐阅读
- reactjs - 从 React WebExtension 访问 Cookies API
- excel - 将 Excel 函数结果分配给单元格内的变量
- html - 服务器迁移后 CSS 未链接
- javascript - d3.js 在鼠标悬停时选择连接的节点
- google-sheets - 使用脚本添加 ='Sheet1!'D3 公式,该公式具有在脚本中提取的工作表名称
- sql - VBA ADO SQL 参数太少
- mysql - 从 InnoDB 表中删除并重用第一个自动增量 ID
- c++ - OpenCV findContours,如何检查两边的颜色
- ruby - 在内存中预加载 minitest 以提高速度
- apache-spark - 插入到 SQL Server RDS 的一行测试有效,但完全加载超时