react 弹窗校验是否表单填写提交,提交后才可以进行下一步界面表单填写
时间: 2023-12-19 14:04:49 浏览: 121
基于BootStrap与jQuery.validate实现表单提交校验功能
你可以在弹窗中添加表单,然后在表单中添加校验规则,当表单填写完整并通过校验后,将提交按钮设为可用状态,用户可以点击提交按钮进行表单提交。在表单提交成功后,你可以通过回调函数或者状态管理库(如redux)来控制下一步界面的表单填写状态。具体实现可以参考以下代码:
```jsx
import React, { useState } from "react";
const Modal = ({ isOpen, onClose }) => {
const [formValues, setFormValues] = useState({
name: "",
email: "",
password: "",
});
const [isValid, setIsValid] = useState(false);
const handleFormChange = (e) => {
const { name, value } = e.target;
setFormValues({ ...formValues, [name]: value });
};
const handleSubmit = () => {
// 在这里进行表单数据提交,并根据提交结果更新下一步界面的表单填写状态
onClose();
};
const validateForm = () => {
// 在这里编写表单校验规则
return formValues.name && formValues.email && formValues.password;
};
return (
<>
{isOpen && (
<div className="modal">
<div className="modal-content">
<h2>填写表单</h2>
<form>
<label htmlFor="name">姓名:</label>
<input
type="text"
name="name"
id="name"
value={formValues.name}
onChange={handleFormChange}
/>
<label htmlFor="email">邮箱:</label>
<input
type="email"
name="email"
id="email"
value={formValues.email}
onChange={handleFormChange}
/>
<label htmlFor="password">密码:</label>
<input
type="password"
name="password"
id="password"
value={formValues.password}
onChange={handleFormChange}
/>
</form>
<button
disabled={!validateForm()}
onClick={handleSubmit}
className="submit-button"
>
提交
</button>
</div>
</div>
)}
</>
);
};
const App = () => {
const [isModalOpen, setIsModalOpen] = useState(true);
const handleModalClose = () => {
setIsModalOpen(false);
};
return (
<div>
<Modal isOpen={isModalOpen} onClose={handleModalClose} />
</div>
);
};
export default App;
```
在上面的代码中,我们利用useState来管理表单数据和提交状态。当用户输入表单数据时,我们会更新表单数据的状态。我们也会利用validateForm()函数来检查表单是否填写完整。当表单通过校验后,提交按钮会变为可用状态,用户可以点击按钮提交表单。表单提交成功后,我们会通过回调函数或者状态管理库来控制下一步界面的表单填写状态。
阅读全文