javascript - 是的,架构电子邮件使用 formik 重置密码字段验证
问题描述
我在表单中使用了甲酸,所以这是我的 HTML
<form onSubmit={handleSubmit} className={css.loginForm}>
<Input
variant='standard'
textAlign='center'
placeholder='Password'
id='password'
name='password'
type='password'
value={values.password}
onChange={handleChange}
onBlur={handleBlur}
autoFocus
error={errors.password && touched.password}
/>
<Input
variant='standard'
textAlign='center'
placeholder='Repeat Password'
id='repeatPassword'
name='repeatPassword'
type='password'
value={values.repeatPassword}
onChange={handleChange}
onBlur={handleBlur}
autoFocus
error={errors.repeatPassword && touched.repeatPassword}
/>
{errors.repeatPassword ? (
<div>{errors.repeatPassword}</div>
) : null}
<Button
variant='primary'
theme='light'
type='submit'
disabled={!!errors.password || !!errors.repeatPassword}>
<Typography variant='h1'>Reset Password</Typography>
</Button>
</form>
所以现在,我正在使用如下验证:
validationSchema: Yup.object().shape({
password: Yup.string().required('Password is required'),
repeatPassword: Yup.string()
.required('')
.oneOf([Yup.ref('password'), null], 'Passwords must match')
}),
在这里,失败的条件是:
- 如果未填写重复密码字段,则该按钮也将启用
- 我只是想显示密码必须匹配的消息,包括两个密码需要匹配并且两个字段都是必需的条件。
在这里,通过上面的这些验证,这些东西不起作用
谁能帮我这个 ?
解决方案
因为你
repeatPassword
用 message 验证是空字符串''
。因此,如果此字段未填写,errors.repeatPassword
则按钮为''
disabled
false
像这样更新您的代码:
validationSchema: Yup.object().shape({ password: Yup.string().required('Password is required'), repeatPassword: Yup.string() .required('Required') .oneOf([Yup.ref('password'), null], 'Passwords must match') }),
{errors.repeatPassword !== "Required" && <div>{errors.repeatPassword}</div>}
推荐阅读
- python - Python mrjob - 找到 10 个最长的单词,但 mrjob 返回重复的单词
- java - 客户化程度报告
- flutter - 为什么尽管观察者的状态发生变化,但应用程序重启后 Flutter BloC UI 没有更新?
- python - 如何在散点图中以不同颜色绘制顶部 %1?
- jquery - jquery:发现来自ajax请求的html响应不起作用
- html - -webkit-flex-direction 使用 React 时未在浏览器上显示
- python - 尝试将数据帧列表连接到单个数据帧时,“重新索引仅对具有唯一值的索引对象有效”
- javascript - 在 Chrome 浏览器中使用 API 时出错
- postgresql - 如果 NEW 等于 OLD 而没有触发器,则 Postgres 跳过更新
- typescript - TypeScript 检查字符串匹配类型